@currents/cmd 1.0.2 → 1.0.4
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/README.md +12 -12
- package/dist/bin/index.js +10 -10
- package/dist/discovery/jest/reporter.d.ts +1 -1
- package/dist/discovery/jest/reporter.js +1 -1
- package/dist/index.js +6 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,23 +26,23 @@ Obtain `--project-id` and [--key](https://docs.currents.dev/guides/record-key) f
|
|
|
26
26
|
`currents` will upload the results, as follows:
|
|
27
27
|
|
|
28
28
|
- use `process.env.CURRENTS_REPORT_DIR` or `--reportDir` to read the results previously generated by one of supported reporters, otherwise
|
|
29
|
-
- use the most recently created directory named as `.currents
|
|
29
|
+
- use the most recently created directory named as `.currents/[timestamp]-[uuidv4()]` in the current working directory
|
|
30
30
|
|
|
31
31
|
## Configuration
|
|
32
32
|
|
|
33
33
|
Please note that all options apart from `--project-id` and `--key` are optional.
|
|
34
34
|
|
|
35
|
-
| Property | Type | Description | Environment variable | Default
|
|
36
|
-
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- |
|
|
37
|
-
| `-k, --key` | `string` | The record key to record the results to Currents. Read more: https://currents.dev/readme/guides/record-key | `CURRENTS_RECORD_KEY` | -
|
|
38
|
-
| `-p, --project-id` | `string` | The id of the project for reporting | `CURRENTS_PROJECT_ID` | -
|
|
39
|
-
| `--machine-id` | `string` | Unique identifier of the machine running the tests. If not provided, it will be generated automatically. See: https://currents.dev/readme/readme?q=machineId | `CURRENTS_MACHINE_ID` | `[random-string]`
|
|
40
|
-
| `--report-dir` | `string` | The directory containing the test results created with one of the [supported](https://docs.currents.dev) reporters | `CURRENTS_REPORT_DIR` | `.currents
|
|
41
|
-
| `--ci-build-id` | `string` | The id of the build to record the test run. Read more: https://currents.dev/readme/guides/ci-build-id | `CURRENTS_CI_BUILD_ID` | `auto:[random-string]`
|
|
42
|
-
| `--debug` | `boolean` | Enable debug logs | `DEBUG="currents,currents:*"` | `false`
|
|
43
|
-
| `-t, --tag` | `string` | Comma-separated tag(s) for recorded runs in Currents | `CURRENTS_TAG` | -
|
|
44
|
-
| `--disable-title-tags` | `boolean` | Disable extracting tags from test title, e.g. `Test name @smoke` would not be tagged with `smoke` | `CURRENTS_DISABLE_TITLE_TAGS` | `false`
|
|
45
|
-
| `--remove-title-tags` | `boolean` | Remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard | `CURRENTS_REMOVE_TITLE_TAGS` | `false`
|
|
35
|
+
| Property | Type | Description | Environment variable | Default |
|
|
36
|
+
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ---------------------- |
|
|
37
|
+
| `-k, --key` | `string` | The record key to record the results to Currents. Read more: https://currents.dev/readme/guides/record-key | `CURRENTS_RECORD_KEY` | - |
|
|
38
|
+
| `-p, --project-id` | `string` | The id of the project for reporting | `CURRENTS_PROJECT_ID` | - |
|
|
39
|
+
| `--machine-id` | `string` | Unique identifier of the machine running the tests. If not provided, it will be generated automatically. See: https://currents.dev/readme/readme?q=machineId | `CURRENTS_MACHINE_ID` | `[random-string]` |
|
|
40
|
+
| `--report-dir` | `string` | The directory containing the test results created with one of the [supported](https://docs.currents.dev) reporters | `CURRENTS_REPORT_DIR` | `.currents/*` |
|
|
41
|
+
| `--ci-build-id` | `string` | The id of the build to record the test run. Read more: https://currents.dev/readme/guides/ci-build-id | `CURRENTS_CI_BUILD_ID` | `auto:[random-string]` |
|
|
42
|
+
| `--debug` | `boolean` | Enable debug logs | `DEBUG="currents,currents:*"` | `false` |
|
|
43
|
+
| `-t, --tag` | `string` | Comma-separated tag(s) for recorded runs in Currents | `CURRENTS_TAG` | - |
|
|
44
|
+
| `--disable-title-tags` | `boolean` | Disable extracting tags from test title, e.g. `Test name @smoke` would not be tagged with `smoke` | `CURRENTS_DISABLE_TITLE_TAGS` | `false` |
|
|
45
|
+
| `--remove-title-tags` | `boolean` | Remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard | `CURRENTS_REMOVE_TITLE_TAGS` | `false` |
|
|
46
46
|
|
|
47
47
|
The configuration is also available by running the CLI command with the `--help` argument.
|
|
48
48
|
|
package/dist/bin/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
-
"use strict";var Wt=Object.create;var te=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Zt=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var tr=(e,t)=>{for(var r in t)te(e,r,{get:t[r],enumerable:!0})},rr=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Xt(t))!er.call(e,s)&&s!==r&&te(e,s,{get:()=>t[s],enumerable:!(o=zt(t,s))||o.enumerable});return e};var
|
|
3
|
-
`)),
|
|
2
|
+
"use strict";var Wt=Object.create;var te=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Zt=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var tr=(e,t)=>{for(var r in t)te(e,r,{get:t[r],enumerable:!0})},rr=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Xt(t))!er.call(e,s)&&s!==r&&te(e,s,{get:()=>t[s],enumerable:!(o=zt(t,s))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Wt(Zt(e)):{},rr(t||!e||!e.__esModule?te(r,"default",{value:e,enumerable:!0}):r,e));var Ii=require("source-map-support/register"),qt=require("commander");var re=require("debug"),or=c(require("fs-extra")),i=(0,re.debug)("currents"),nr=null;function fe(){re.debug.enable("currents,currents:*")}function Re(e){nr=e}var v=class extends Error{};var sr=[];function Ie(e){sr.push(e)}var g=c(require("chalk")),B=c(require("util"));var Ce=[],Te=[];var x=(...e)=>{let t=B.default.format(...e);Ie(t),console.log(t)},y=x,E=(...e)=>{let t=B.default.format(...e);return Te.push(t),i("WARNING: ",t),x(g.default.bgYellow.black(" WARNING "),t)};var he=(...e)=>x(g.default.green.bold(B.default.format(...e))),l=(...e)=>{let t=B.default.format(...e);return Ce.push(t),i("ERROR: ",t),x(g.default.bgRed.white(" ERROR "),t)};var w=(e=2)=>console.log(Array(e).fill("").join(`
|
|
3
|
+
`)),go=g.default.cyan,_o=g.default.blueBright,fo=g.default.red,Ro=g.default.yellow,Io=g.default.green,Co=g.default.gray,To=g.default.white,ho=g.default.black,Oo=g.default.magenta,T=g.default.dim,Po=g.default.bold;var R={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 P(e){return R[e].env}function Oe(e){return R[e].cli}function Pe(e){return R[e].name}function Ue(){return{projectId:process.env[R.projectId.env],recordKey:process.env[R.recordKey.env],ciBuildId:process.env[R.ciBuildId.env],tag:process.env[R.tag.env]?process.env[R.tag.env]?.split(",").map(e=>e.trim()):void 0,disableTitleTags:!!process.env[R.disableTitleTags.env],removeTitleTags:!!process.env[R.removeTitleTags.env],debug:!!process.env[R.debug.env],machineId:process.env[R.machineId.env]}}var Ae=c(require("fs"));function Se(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}}function Le(){if(process.env.CURRENTS_REPORTER_CONFIG_PATH)try{let e=JSON.parse(Ae.default.readFileSync(process.env.CURRENTS_REPORTER_CONFIG_PATH).toString());return i("CLI options from file: %o",e),e}catch{return{}}return{}}var ar=i.extend("config"),cr=["projectId","recordKey"],ne=null;function Ne(e){let t={...oe(e),...oe(Le()),...oe(Ue())};cr.forEach(r=>{if(!t[r])throw l(`${Pe(r)} is required for Currents Reporter. Use the following methods to set Currents Project ID:
|
|
4
4
|
- as environment variable: ${T(P(r))}
|
|
5
|
-
- as CLI flag of the command: ${T(Oe(r))}`),new v("Missing required config variable")}),ne=t,ar("Resolved Currents config: %o",ne)}function oe(e){return Object.entries(e??{}).reduce((t,[r,o])=>o===void 0?t:{...t,[r]:o},{})}function F(){return ne}var Dt=require("lodash"),W=
|
|
6
|
-
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function lr(e,{status:t,data:r}){(0,_.match)(t).with(401,()=>{
|
|
7
|
-
%o`,r)}).with(429,()=>{
|
|
8
|
-
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function dr(e,t){(0,_.match)(t).with({code:ke.MISSING_SUITE,message:_.P.string,errors:_.P.array(_.P.string)},async r=>{let{message:o,errors:s}=r;w(1),l(...Ge(o,s))}).with({code:ke.RUN_EXPIRED,message:_.P.string},r=>{
|
|
5
|
+
- as CLI flag of the command: ${T(Oe(r))}`),new v("Missing required config variable")}),ne=t,ar("Resolved Currents config: %o",ne)}function oe(e){return Object.entries(e??{}).reduce((t,[r,o])=>o===void 0?t:{...t,[r]:o},{})}function F(){return ne}var Dt=require("lodash"),W=c(require("path")),bt=c(require("semver"));var Qe=require("util"),We=require("zlib");var $e=c(require("lodash"));var xe=c(require("axios")),we=c(require("axios-retry")),Fe=c(require("lodash"));var se=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",De=()=>3e4;var ie=require("axios"),ae=c(require("pretty-ms"));var be=i.extend("http"),H=e=>[3*1e3,15*1e3,30*1e3][e-1],Be=e=>(be("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,ie.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,ie.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),k=()=>3;function ye(e,t,r){be("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,ae.default)(H(e)),e,k()),E("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,ae.default)(H(e)),e,k())}var Me=i.extend("http"),G=null;function ur(){let e=xe.default.create({baseURL:se(),timeout:De(),transitional:{clarifyTimeoutError:!0}});return e.interceptors.request.use(t=>{let r=t["axios-retry"]?.retryCount??0;t.headers.get("Content-Type")||t.headers.set("Content-Type","application/json");let o={...Fe.default.pick(t,"method","url","headers"),data:Buffer.isBuffer(t.data)?"buffer":t.data};return r?Me("network request retry: %o",ve({...o,isRetry:!0})):Me("network request: %o",ve(o)),t}),(0,we.default)(e,{retries:k(),retryCondition:Be,retryDelay:H,shouldResetTimeout:!0,onRetry:ye}),e}function He(){return G||(G=ur(),G)}function ve(e){return{method:e.method,baseUrl:se(),url:e.url,data:e.isRetry?"<retry>":pr(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function pr(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var je=require("axios"),Ve=c(require("lodash")),_=require("ts-pattern");function Ke(e){(0,_.match)(e).when(je.isAxiosError,mr).otherwise(()=>{E("Unexpected error while sending network request: %s",e)})}function mr(e){return(0,_.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:_.P.not(_.P.nullish)},t=>{lr(t,{status:t.response.status,data:t.response.data})}).otherwise(t=>{E(`[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 lr(e,{status:t,data:r}){(0,_.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:
|
|
7
|
+
%o`,r)}).with(429,()=>{E(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{dr(e,r)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
|
|
8
|
+
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function dr(e,t){(0,_.match)(t).with({code:ke.MISSING_SUITE,message:_.P.string,errors:_.P.array(_.P.string)},async r=>{let{message:o,errors:s}=r;w(1),l(...Ge(o,s))}).with({code:ke.RUN_EXPIRED,message:_.P.string},r=>{E(r.message)}).with({message:_.P.string,errors:_.P.array(_.P.string)},r=>{let{message:o,errors:s}=r;w(1),E(...Ge(o,s)),w(1)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
|
|
9
9
|
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var ke={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function Ge(e,t){return Ve.default.isString(e)?t?.length===0?[e]:[e,`
|
|
10
10
|
${(t??[]).map(r=>` - ${r}`).join(`
|
|
11
11
|
`)}
|
|
12
|
-
`]:["Unexpected network error"]}var Je=i.extend("http");async function Ye(e,t=He){try{let r=await t().request(e);return Je("network response: %o",{...$e.default.omit(r,"request","config"),url:r.config.url,method:r.config.method}),r}catch(r){let o=r;throw Je("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),Ke(o),o}}var qe=i.extend("run"),gr=(0,Qe.promisify)(We.gzip);async function ze(e){try{qe("Run params: %o",e);let t=await Er(JSON.stringify(e));return Ye({url:"v2/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:t}).then(r=>r.data)}catch(t){throw qe("Failed to create the run:",t),t}}async function Er(e){try{return await gr(e)}catch(t){throw l("Failed to compress run payload:",t),t}}var mt=a(require("fs-extra")),lt=require("jest-cli"),dt=a(require("tmp"));var U=a(require("fs-extra")),y=a(require("path"));async function Xe(e){let t=await _r(e?.reportDir);if(!t)throw new Error("Failed to find the report dir");return{reportDir:t,configFilePath:e?.configFilePath??y.default.join(t,"config.json")}}async function _r(e){return e?(await j(e),e):fr(process.cwd(),".currents-report")}async function fr(e,t){let r=await U.default.readdir(e),o=null;for(let s of r){let c=y.default.join(e,s),u=await U.default.stat(c);u.isDirectory()&&s.startsWith(t)&&(!o||u.birthtime>o.birthtime)&&(o={name:s,birthtime:u.birthtime})}return o?o.name:null}async function j(e){try{return await U.default.pathExists(e)}catch{return l("Error checking if path exists:",l),!1}}async function Ze(e){let t=y.default.join(e,"instances");return Rr(t)}async function Rr(e){let t=await U.default.readdir(e),r=[];for(let o of t){let s=y.default.join(e,o);(await U.default.stat(s)).isFile()&&r.push(s)}return r}async function S(e){try{return await U.default.readJson(e)}catch(t){throw l("Error while reading JSON file: %s",e,t),l}}async function ce(e,t){try{return await U.default.writeFile(e,t,"utf8"),e}catch(r){throw l(`Error writing file at ${e}:`,r),r}}var V={};tr(V,{getNanoid:()=>Ir,userFacingNanoid:()=>pe});var ue=require("nanoid"),et="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ir=(e=16)=>(0,ue.customAlphabet)(et,e)(),pe=(0,ue.customAlphabet)(et,12);var ut=require("lodash");var tt=require("lodash"),Cr=["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 rt(e){return(0,tt.omit)(e,...Cr)}function ot(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(s=>{t.push(`--${r}=${s}`)}):t.push(`--${r}=${o}`));return t.join(" ")}var it=a(require("fs")),at=require("jest-config"),me=require("lodash"),le=a(require("path"));function K(e,t){return(...r)=>new Promise((o,s)=>{let c=0,u=()=>{c++;try{let d=e(...r);o(d)}catch(d){if(c>=t.length)s(d);else{let f=t[c-1];setTimeout(u,f)}}};u()})}var nt=a(require("fs-extra")),Tr=a(require("path"));async function J(e){let t=await nt.default.pathExists(e);if(!t)throw new Error("File does not exist");return t}var st=i.extend("jest-discovery");async function ct(e){try{let{config:t,configPath:r}=await(0,at.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"],s=["collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","detectLeaks","detectOpenHandles","errorOnDeprecated","forceCoverageMatch","openHandlesTimeout","runner","watchPathIgnorePatterns"],c=(0,me.omit)(t,o);if(c.projects&&(c.projects=c.projects.map(f=>typeof f!="string"?(0,me.omit)(f,s):f)),c.rootDir&&Object.keys(c).length===1)return null;let u=le.default.resolve(r?le.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),d=`module.exports=${JSON.stringify(c,null,2)}`;return st("configFileContent: %O",d),it.default.writeFileSync(u,d),await K(J,[200,200,200,200,200,1e3])(u),u}catch(t){return l("Failed to recreate the config file"),st("error %o",t),null}}async function pt(e){let t="!!##ThisPatternWillNotMatchAnyTestName##!!",r=e.options,o=rt(r),s=ot(o),c=r.config,u=await ct(c);return{cliArgs:[s,"--testNamePattern",t,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",u?`--config=${u}`:"",...e.args].filter(f=>!(0,ut.isEmpty)(f)),configFilePath:u}}var hr=i.extend("jest-discovery");async function gt(e,t){console.time(T("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:o}=await pt(t);try{let s=dt.default.fileSync({postfix:".json"});return hr("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=s.name,await(0,lt.run)(r.concat(["--openHandlesTimeout=0"])),await K(J,Array.from({length:300},()=>100))(s.name),console.timeEnd(T("@currents/jest:fullTestSuite-ready")),await S(s.name)}catch(s){return l("Failed to obtain the jest full test suite:",s),[]}finally{o&&mt.default.unlinkSync(o)}}var D=class{constructor(t){this.config=t}async getFullTestSuite(){return[]}};var $=class extends D{constructor(t){super(t)}async getFullTestSuite(){return gt(this.config.frameworkConfig,this.config.cliArgs)}};function Et(e){switch(e.framework){case"jest":return new $(e);default:return new D(e)}}var m=require("lodash");var Y=i.extend("ci"),Or=(e,...t)=>(0,m.chain)(t).compact().join(e).value(),Pr=(e,t)=>(0,m.set)(e,(0,m.camelCase)(t),process.env[t]),p=e=>(0,m.transform)(e,Pr,{}),Ur=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Ar=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Sr=()=>(0,m.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),Lr=()=>process.env.bamboo_buildNumber,Nr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,Dr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,br=()=>(0,m.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Br=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),yr=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,Mr=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,vr=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,xr={appveyor:"APPVEYOR",azure:Ar,awsCodeBuild:Sr,bamboo:Lr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Nr,codeshipPro:Dr,concourse:br,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Br,goCD:"GO_JOB_NAME",googleCloud:yr,jenkins:Mr,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:Ur,travis:"TRAVIS",wercker:vr,netlify:"NETLIFY",layerci:"LAYERCI"};function wr(){let{env:e}=process;return(0,m.findKey)(xr,t=>{if((0,m.isString)(t))return e[t];if((0,m.isFunction)(t))return t()})}var _t=()=>({appveyor:p(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:p(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:p(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:p(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:p(["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:p(["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:p(["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:p(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:p(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:p(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:p(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:p(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:p(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:p(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH"]),goCD:p(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:p(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:p(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:p(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]),shippable:p(["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:p(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:p(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),wercker:null,netlify:p(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:p(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),Fr=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Or(`
|
|
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}}},ft=e=>{let t=Rt();return t?(0,m.chain)(e()).get(t).value():{}};function Hr(){return(0,m.chain)(_t()).omitBy(m.isNull).keys().value()}function kr(e){return e&&Hr().includes(e)}function Rt(){let e=wr();return Y("detected CI provider name: %s",e),e||null}function Gr(){return ft(_t)}function It(){return ft(Fr)}function Ct(e){let t=Gr(),r=Rt(),o=jr(e,r);return Y("detected CI provider: %s",r),Y("detected CI params: %O",t),Y("detected CI build ID: %o",o),{params:t,provider:r,ciBuildId:o}}function jr(e,t){return e?{source:"user",value:e}:kr(t)?{source:"server",value:null}:{source:"random",value:`auto:${pe()}`}}var ht=require("@currents/commit-info"),Ot=require("lodash");var q=require("lodash");var de=i.extend("ci-git");function Tt(e){de("git commit existing info: %O",e);let t=It();de("commit info from provider environment variables: %O",t);let r=(0,q.transform)(e,(o,s,c)=>{let u=s||(t?t[c]:null);return o[c]=(0,q.defaultTo)(u,null)});return de("combined git and environment variables from provider: %O",r),r}var Vr=async()=>{let e=await(0,ht.commitInfo)();return Tt({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Pt=(0,Ot.memoize)(Vr);var Ut=a(require("getos")),At=require("lodash"),I=require("os"),St=require("util"),Kr=async()=>{if((0,I.platform)()==="linux")try{let e=await(0,St.promisify)(Ut.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)()},Jr=async()=>{let e=await Kr();return{osName:(0,I.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,I.freemem)(),total:(0,I.totalmem)()}}},Lt=(0,At.memoize)(Jr);var Nt={name:"@currents/cmd",version:"1.0.2",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/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/semver":"^7.5.8","@types/tmp":"^0.2.6","@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",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",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0"},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/discovery/jest/reporter.js",require:"./dist/discovery/jest/reporter.js",types:"./dist/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 Q=Nt.version;async function Bt(){let e=F();if(!e)throw new Error("Currents config is missing!");e.debug&&fe();let t=await Xe(e);Re(Wr(t.reportDir)),i("Reporter options: %o",t),B("Report directory: %s",t.reportDir);let r=await S(t.configFilePath);i("Report config: %o",r);let o=await Ze(t.reportDir);i("Found %d instance results in the reportDir: %s",o.length,t.reportDir);let s=qr(t.reportDir),c=await j(s),u=Qr(t.reportDir),d=null;if(c){let C=await S(s);g("Marker file detected. The report was already uploaded: %o",{runUrl:C.response.runUrl,isoDate:C.isoDate}),await j(u)&&(d=await S(u),i("Full test suite file detected: %s",u))}if(d)i("The discovery stage was skipped");else{if(d=await Et(r).getFullTestSuite(),zr(d))throw new Error("Failed to discover the full test suite!");await ce(u,JSON.stringify(d))}let f=d.length===1?d[0].name:null,Z={currents:e},L={type:r.framework,version:r.frameworkVersion,clientVersion:Q},_e=V.userFacingNanoid(),M=Ct(e.ciBuildId),A={};for await(let C of o){let O=await S(C);A[O.groupId]||(A[O.groupId]=[]),A[O.groupId].push(O)}for await(let C of Object.keys(A)){let O=A[C],ee=C;f&&(i("Default group found: %s, overwriting the group in the results",f),ee=f,O=O.map(N=>({...N,groupId:f})));try{let N=await Yr({ci:M,group:ee,instances:O,fullTestSuite:d,config:Z,machineId:_e,framework:L});i("Api response: %o",N),B("[%s] Run created: %s",ee,N.runUrl);let Qt={response:N,isoDate:new Date().toISOString()};await ce(s,JSON.stringify(Qt)),i("Marker file %s: %s",c?"overwritten":"created",s)}catch{throw new Error("Failed to upload the results to the dashboard")}}}async function Yr({ci:e,group:t,instances:r,fullTestSuite:o,config:s,machineId:c,framework:u}){let d=await Pt(),f=await Lt(),Z={browserName:"node",browserVersion:bt.default.coerce(process.version)?.version},{currents:L}=s,M={platform:{...Z,...f},ci:e,commit:d,group:t,fullTestSuite:o,config:s,projectId:L.projectId,recordKey:L.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:L.tag??[],machineId:L.machineId??c,framework:u,instances:r};return i("Creating run: %o",(0,Dt.mapValues)(M,(A,C)=>C==="recordKey"?"******":A)),ze(M)}function qr(e){return W.default.join(e,"upload.marker.json")}function Qr(e){return W.default.join(e,"fullTestSuite.json")}function Wr(e){return W.default.join(e,`.debug-${new Date().toISOString()}.log`)}function zr(e){return e.length===0||e.some(t=>t.tests.length===0)}var Yt=a(require("fs"));var jt=require("@commander-js/extra-typings"),Vt=a(require("chalk"));var h=require("@commander-js/extra-typings");var yt=new h.Option("--ci-build-id <id>","the unique identifier for the recorded build (run)").env(P("ciBuildId")),Mt=new h.Option("-k, --key <record-key>","your secret Record Key obtained from Currents").env(P("recordKey")),vt=new h.Option("-p, --project-id <project>","the project ID for results reporting obtained from Currents").env(P("projectId")),xt=new h.Option("-t, --tag <tag>","comma-separated tag(s) for recorded runs in Currents").argParser(Xr),wt=new h.Option("--remove-title-tags","remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard").default(!1),Ft=new h.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),Ht=new h.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(P("machineId")),kt=new h.Option("--report-dir <string>","explicit path to the report directory").env(P("reportDir")),Gt=new h.Option("--debug","enable debug logs").env(P("debug")).default(!1);function Xr(e,t=[]){return e?t.concat(e.split(",").map(r=>r.trim())):t}var z="currents",Kt=(e=ge())=>e.version(Q),Zr=`
|
|
12
|
+
`]:["Unexpected network error"]}var Je=i.extend("http");async function Ye(e,t=He){try{let r=await t().request(e);return Je("network response: %o",{...$e.default.omit(r,"request","config"),url:r.config.url,method:r.config.method}),r}catch(r){let o=r;throw Je("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),Ke(o),o}}var qe=i.extend("run"),Er=(0,Qe.promisify)(We.gzip);async function ze(e){try{qe("Run params: %o",e);let t=await gr(JSON.stringify(e));return Ye({url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:t}).then(r=>r.data)}catch(t){throw qe("Failed to create the run:",t),t}}async function gr(e){try{return await Er(e)}catch(t){throw l("Failed to compress run payload:",t),t}}var mt=c(require("fs-extra")),lt=require("jest-cli"),dt=c(require("tmp"));var A=c(require("fs-extra")),U=c(require("path"));async function Xe(e){let t=await _r(e?.reportDir);if(!t)throw new Error("Failed to find the report dir");return{reportDir:t,configFilePath:e?.configFilePath??U.default.join(t,"config.json")}}async function _r(e){return e?(await j(e),e):fr((0,U.join)(process.cwd(),".currents"))}async function fr(e){let t=await A.default.readdir(e),r=null;for(let o of t){let s=U.default.join(e,o),a=await A.default.stat(s);a.isDirectory()&&(!r||a.birthtime>r.birthtime)&&(r={name:o,birthtime:a.birthtime})}return r?(0,U.resolve)(e,r.name):null}async function j(e){try{return await A.default.pathExists(e)}catch{return l("Error checking if path exists:",l),!1}}async function Ze(e){let t=U.default.join(e,"instances");return Rr(t)}async function Rr(e){let t=await A.default.readdir(e),r=[];for(let o of t){let s=U.default.join(e,o);(await A.default.stat(s)).isFile()&&r.push(s)}return r}async function L(e){try{return await A.default.readJson(e)}catch(t){throw l("Error while reading JSON file: %s",e,t),l}}async function ce(e,t){try{return await A.default.writeFile(e,t,"utf8"),e}catch(r){throw l(`Error writing file at ${e}:`,r),r}}var V={};tr(V,{getNanoid:()=>Ir,userFacingNanoid:()=>pe});var ue=require("nanoid"),et="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ir=(e=16)=>(0,ue.customAlphabet)(et,e)(),pe=(0,ue.customAlphabet)(et,12);var ut=require("lodash");var tt=require("lodash"),Cr=["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 rt(e){return(0,tt.omit)(e,...Cr)}function ot(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(s=>{t.push(`--${r}=${s}`)}):t.push(`--${r}=${o}`));return t.join(" ")}var it=c(require("fs")),at=require("jest-config"),me=require("lodash"),le=c(require("path"));function K(e,t){return(...r)=>new Promise((o,s)=>{let a=0,m=()=>{a++;try{let d=e(...r);o(d)}catch(d){if(a>=t.length)s(d);else{let f=t[a-1];setTimeout(m,f)}}};m()})}var nt=c(require("fs-extra")),Tr=c(require("path"));async function J(e){let t=await nt.default.pathExists(e);if(!t)throw new Error("File does not exist");return t}var st=i.extend("jest-discovery");async function ct(e){try{let{config:t,configPath:r}=await(0,at.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"],s=["collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","detectLeaks","detectOpenHandles","errorOnDeprecated","forceCoverageMatch","openHandlesTimeout","runner","watchPathIgnorePatterns"],a=(0,me.omit)(t,o);if(a.projects&&(a.projects=a.projects.map(f=>typeof f!="string"?(0,me.omit)(f,s):f)),a.rootDir&&Object.keys(a).length===1)return null;let m=le.default.resolve(r?le.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),d=`module.exports=${JSON.stringify(a,null,2)}`;return st("configFileContent: %O",d),it.default.writeFileSync(m,d),await K(J,[200,200,200,200,200,1e3])(m),m}catch(t){return l("Failed to recreate the config file"),st("error %o",t),null}}async function pt(e){let t="!!##ThisPatternWillNotMatchAnyTestName##!!",r=e.options,o=rt(r),s=ot(o),a=r.config,m=await ct(a);return{cliArgs:[s,"--testNamePattern",t,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",m?`--config=${m}`:"",...e.args].filter(f=>!(0,ut.isEmpty)(f)),configFilePath:m}}var hr=i.extend("jest-discovery");async function Et(e,t){console.time(T("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:o}=await pt(t);try{let s=dt.default.fileSync({postfix:".json"});return hr("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=s.name,await(0,lt.run)(r.concat(["--openHandlesTimeout=0"])),await K(J,Array.from({length:300},()=>100))(s.name),console.timeEnd(T("@currents/jest:fullTestSuite-ready")),await L(s.name)}catch(s){return l("Failed to obtain the jest full test suite:",s),[]}finally{o&&mt.default.unlinkSync(o)}}var b=class{constructor(t){this.config=t}async getFullTestSuite(){return[]}};var $=class extends b{constructor(t){super(t)}async getFullTestSuite(){return Et(this.config.frameworkConfig,this.config.cliArgs)}};function gt(e){switch(e.framework){case"jest":return new $(e);default:return new b(e)}}var p=require("lodash");var Y=i.extend("ci"),Or=(e,...t)=>(0,p.chain)(t).compact().join(e).value(),Pr=(e,t)=>(0,p.set)(e,(0,p.camelCase)(t),process.env[t]),u=e=>(0,p.transform)(e,Pr,{}),Ur=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Ar=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Sr=()=>(0,p.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),Lr=()=>process.env.bamboo_buildNumber,Nr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,Dr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,br=()=>(0,p.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Br=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),yr=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,Mr=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,vr=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,xr={appveyor:"APPVEYOR",azure:Ar,awsCodeBuild:Sr,bamboo:Lr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Nr,codeshipPro:Dr,concourse:br,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Br,goCD:"GO_JOB_NAME",googleCloud:yr,jenkins:Mr,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:Ur,travis:"TRAVIS",wercker:vr,netlify:"NETLIFY",layerci:"LAYERCI"};function wr(){let{env:e}=process;return(0,p.findKey)(xr,t=>{if((0,p.isString)(t))return e[t];if((0,p.isFunction)(t))return t()})}var _t=()=>({appveyor:u(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:u(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:u(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:u(["BITBUCKET_REPO_SLUG","BITBUCKET_REPO_OWNER","BITBUCKET_BUILD_NUMBER","BITBUCKET_PARALLEL_STEP","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT"]),buildkite:u(["BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH"]),circle:u(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:u(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:u(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:u(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:u(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:u(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:u(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:u(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH"]),goCD:u(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:u(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:u(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:u(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]),shippable:u(["SHIPPABLE_BUILD_ID","SHIPPABLE_BUILD_NUMBER","SHIPPABLE_COMMIT_RANGE","SHIPPABLE_CONTAINER_NAME","SHIPPABLE_JOB_ID","SHIPPABLE_JOB_NUMBER","SHIPPABLE_REPO_SLUG","IS_FORK","IS_GIT_TAG","IS_PRERELEASE","IS_RELEASE","REPOSITORY_URL","REPO_FULL_NAME","REPO_NAME","BUILD_URL","BASE_BRANCH","HEAD_BRANCH","IS_PULL_REQUEST","PULL_REQUEST","PULL_REQUEST_BASE_BRANCH","PULL_REQUEST_REPO_FULL_NAME"]),teamcity:null,teamfoundation:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:u(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),wercker:null,netlify:u(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:u(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),Fr=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Or(`
|
|
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}}},ft=e=>{let t=Rt();return t?(0,p.chain)(e()).get(t).value():{}};function Hr(){return(0,p.chain)(_t()).omitBy(p.isNull).keys().value()}function kr(e){return e&&Hr().includes(e)}function Rt(){let e=wr();return Y("detected CI provider name: %s",e),e||null}function Gr(){return ft(_t)}function It(){return ft(Fr)}function Ct(e){let t=Gr(),r=Rt(),o=jr(e,r);return Y("detected CI provider: %s",r),Y("detected CI params: %O",t),Y("detected CI build ID: %o",o),{params:t,provider:r,ciBuildId:o}}function jr(e,t){return e?{source:"user",value:e}:kr(t)?{source:"server",value:null}:{source:"random",value:`auto:${pe()}`}}var ht=require("@currents/commit-info"),Ot=require("lodash");var q=require("lodash");var de=i.extend("ci-git");function Tt(e){de("git commit existing info: %O",e);let t=It();de("commit info from provider environment variables: %O",t);let r=(0,q.transform)(e,(o,s,a)=>{let m=s||(t?t[a]:null);return o[a]=(0,q.defaultTo)(m,null)});return de("combined git and environment variables from provider: %O",r),r}var Vr=async()=>{let e=await(0,ht.commitInfo)();return Tt({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Pt=(0,Ot.memoize)(Vr);var Ut=c(require("getos")),At=require("lodash"),I=require("os"),St=require("util"),Kr=async()=>{if((0,I.platform)()==="linux")try{let e=await(0,St.promisify)(Ut.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)()},Jr=async()=>{let e=await Kr();return{osName:(0,I.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,I.freemem)(),total:(0,I.totalmem)()}}},Lt=(0,At.memoize)(Jr);var Nt={name:"@currents/cmd",version:"1.0.4",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/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/semver":"^7.5.8","@types/tmp":"^0.2.6","@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",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",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0"},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/discovery/jest/reporter.js",require:"./dist/discovery/jest/reporter.js",types:"./dist/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 Q=Nt.version;async function Bt(){let e=F();if(!e)throw new Error("Currents config is missing!");e.debug&&fe();let t=await Xe(e);Re(Wr(t.reportDir)),i("Reporter options: %o",t),y("Report directory: %s",t.reportDir);let r=await L(t.configFilePath);i("Report config: %o",r);let o=await Ze(t.reportDir);i("Found %d instance results in the reportDir: %s",o.length,t.reportDir);let s=qr(t.reportDir),a=await j(s),m=Qr(t.reportDir),d=null;if(a){let C=await L(s);E("Marker file detected. The report was already uploaded: %o",{runUrl:C.response.runUrl,isoDate:C.isoDate}),await j(m)&&(d=await L(m),i("Full test suite file detected: %s",m))}if(d)i("The discovery stage was skipped");else{if(d=await gt(r).getFullTestSuite(),zr(d))throw new Error("Failed to discover the full test suite!");await ce(m,JSON.stringify(d))}let f=d.length===1?d[0].name:null,Z={currents:e},N={type:r.framework,version:r.frameworkVersion,clientVersion:Q},_e=V.userFacingNanoid(),M=Ct(e.ciBuildId),S={};for await(let C of o){let O=await L(C);S[O.groupId]||(S[O.groupId]=[]),S[O.groupId].push(O)}for await(let C of Object.keys(S)){let O=S[C],ee=C;f&&(i("Default group found: %s, overwriting the group in the results",f),ee=f,O=O.map(D=>({...D,groupId:f})));try{let D=await Yr({ci:M,group:ee,instances:O,fullTestSuite:d,config:Z,machineId:_e,framework:N});i("Api response: %o",D),y("[%s] Run created: %s",ee,D.runUrl);let Qt={response:D,isoDate:new Date().toISOString()};await ce(s,JSON.stringify(Qt)),i("Marker file %s: %s",a?"overwritten":"created",s)}catch{throw new Error("Failed to upload the results to the dashboard")}}}async function Yr({ci:e,group:t,instances:r,fullTestSuite:o,config:s,machineId:a,framework:m}){let d=await Pt(),f=await Lt(),Z={browserName:"node",browserVersion:bt.default.coerce(process.version)?.version},{currents:N}=s,M={platform:{...Z,...f},ci:e,commit:d,group:t,fullTestSuite:o,config:s,projectId:N.projectId,recordKey:N.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:N.tag??[],machineId:N.machineId??a,framework:m,instances:r};return i("Creating run: %o",(0,Dt.mapValues)(M,(S,C)=>C==="recordKey"?"******":S)),ze(M)}function qr(e){return W.default.join(e,"upload.marker.json")}function Qr(e){return W.default.join(e,"fullTestSuite.json")}function Wr(e){return W.default.join(e,`.debug-${new Date().toISOString()}.log`)}function zr(e){return e.length===0||e.some(t=>t.tests.length===0)}var Yt=c(require("fs"));var jt=require("@commander-js/extra-typings"),Vt=c(require("chalk"));var h=require("@commander-js/extra-typings");var yt=new h.Option("--ci-build-id <id>","the unique identifier for the recorded build (run)").env(P("ciBuildId")),Mt=new h.Option("-k, --key <record-key>","your secret Record Key obtained from Currents").env(P("recordKey")),vt=new h.Option("-p, --project-id <project>","the project ID for results reporting obtained from Currents").env(P("projectId")),xt=new h.Option("-t, --tag <tag>","comma-separated tag(s) for recorded runs in Currents").argParser(Xr),wt=new h.Option("--remove-title-tags","remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard").default(!1),Ft=new h.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),Ht=new h.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(P("machineId")),kt=new h.Option("--report-dir <string>","explicit path to the report directory").env(P("reportDir")),Gt=new h.Option("--debug","enable debug logs").env(P("debug")).default(!1);function Xr(e,t=[]){return e?t.concat(e.split(",").map(r=>r.trim())):t}var z="currents",Kt=(e=Ee())=>e.version(Q),Zr=`
|
|
14
14
|
----------------------------------------------------
|
|
15
15
|
\u{1F4D6} Documentation: https://docs.currents.dev
|
|
16
16
|
\u{1F919} Support: support@currents.dev
|
|
@@ -26,7 +26,7 @@ ${T(`${z} upload --key <record-key> --project-id <id> --ci-build-id <build-id> -
|
|
|
26
26
|
|
|
27
27
|
Provide a custom path to the reports directory:
|
|
28
28
|
${T(`${z} upload --key <record-key> --project-id <id> --ci-build-id <build-id> --report-dir <report-dir>`)}
|
|
29
|
-
`,
|
|
30
|
-
${Zr}`).addOption(yt).addOption(Mt).addOption(vt).addOption(xt).addOption(wt).addOption(Ft).addOption(Ht).addOption(Gt).addOption(kt);var Jt=require("tmp-promise"),$t=async()=>{let{path:e}=await(0,Jt.file)();return e};var
|
|
29
|
+
`,Ee=()=>new jt.Command().name(z).command("upload").showHelpAfterError("(add --help for additional information)").allowUnknownOption().description(`Upload test results generated by Currents reporters to https://currents.dev
|
|
30
|
+
${Zr}`).addOption(yt).addOption(Mt).addOption(vt).addOption(xt).addOption(wt).addOption(Ft).addOption(Ht).addOption(Gt).addOption(kt);var Jt=require("tmp-promise"),$t=async()=>{let{path:e}=await(0,Jt.file)();return e};var ge=i.extend("cli"),X=class{constructor(){this.configFilePath=null;this.program=Kt(Ee()),this.cliOptions=this.program.parse().opts(),ge("CLI options: %o",this.cliOptions),this.parsedConfig=Se(this.cliOptions),ge("Parsed config from CLI options: %o",this.parsedConfig)}async getConfigFilePath(){if(this.configFilePath)return this.configFilePath;let t=await $t();return Yt.default.writeFileSync(t,JSON.stringify(this.parsedConfig)),ge("CLI options temp file path: %s",t),this.configFilePath=t,t}};import("dotenv/config");function eo(){let e=new X;Ne(e.parsedConfig);let t=F();return y("Currents config: %o",{...t,recordKey:t?.recordKey?"*****":void 0}),Bt()}eo().then(()=>{he("Script execution finished"),process.exit(0)}).catch(e=>{e instanceof qt.CommanderError&&(l(e.message),process.exit(e.exitCode)),l("Script execution failed:",e),process.exit(1)});
|
|
31
31
|
/*! For license information please see index.js.LEGAL.txt */
|
|
32
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Reporter, AggregatedResult, Test, TestResult, TestContext } from '@jest/reporters';
|
|
2
2
|
|
|
3
3
|
declare class DiscoveryReporter implements Reporter {
|
|
4
|
-
private
|
|
4
|
+
private specsWithoutResultsCount;
|
|
5
5
|
private fullTestSuite;
|
|
6
6
|
onRunStart(results: AggregatedResult): void;
|
|
7
7
|
onTestFileResult(test: Test, testResult: TestResult): Promise<void> | void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var v=Object.create;var a=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var W=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},R=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!O.call(t,r)&&r!==o&&a(t,r,{get:()=>e[r],enumerable:!(n=A(e,r))||n.enumerable});return t};var i=(t,e,o)=>(o=t!=null?v(D(t)):{},R(e||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),_=t=>R(a({},"__esModule",{value:!0}),t);var Y={};W(Y,{default:()=>g});module.exports=_(Y);var N=i(require("fs-extra"));var b=require("debug"),$=i(require("fs-extra")),c=(0,b.debug)("currents");var w=i(require("crypto"));var H=i(require("fs-extra")),u=i(require("path"));function S(t,e){return L(u.default.relative(e,t))}function L(t){return t.split(u.default.sep).join(u.default.posix.sep)}function C(){return"root"}function y(t){return t.context.config.displayName?.name??t.context.config.id}function d(t){return[...t.ancestorTitles,t.title]}function x(t){return S(t.path,t.context.config.rootDir)}function j(t,e){let o=d(e),n=x(t),r=o.join(" ")+n;return w.default.createHash("sha256").update(r).digest("hex").substring(0,16)}function I(t){let e=(t.join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(o=>o);return Array.from(new Set([...e].map(o=>o.trim()).map(o=>o.replace("@",""))))}var M=[];function F(t){M.push(t)}var s=i(require("chalk")),T=i(require("util"));var k=[];var G=(...t)=>{let e=T.default.format(...t);F(e),console.log(e)};var E=(...t)=>{let e=T.default.format(...t);return k.push(e),c("ERROR: ",e),G(s.default.bgRed.white(" ERROR "),e)};var lt=s.default.cyan,at=s.default.blueBright,ct=s.default.red,ut=s.default.yellow,pt=s.default.green,gt=s.default.gray,mt=s.default.white,ft=s.default.black,dt=s.default.magenta,h=s.default.dim,xt=s.default.bold;var p=c.extend("jest-discovery"),g=class{constructor(){this.
|
|
1
|
+
"use strict";var v=Object.create;var a=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var W=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},R=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!O.call(t,r)&&r!==o&&a(t,r,{get:()=>e[r],enumerable:!(n=A(e,r))||n.enumerable});return t};var i=(t,e,o)=>(o=t!=null?v(D(t)):{},R(e||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),_=t=>R(a({},"__esModule",{value:!0}),t);var Y={};W(Y,{default:()=>g});module.exports=_(Y);var N=i(require("fs-extra"));var b=require("debug"),$=i(require("fs-extra")),c=(0,b.debug)("currents");var w=i(require("crypto"));var H=i(require("fs-extra")),u=i(require("path"));function S(t,e){return L(u.default.relative(e,t))}function L(t){return t.split(u.default.sep).join(u.default.posix.sep)}function C(){return"root"}function y(t){return t.context.config.displayName?.name??t.context.config.id}function d(t){return[...t.ancestorTitles,t.title]}function x(t){return S(t.path,t.context.config.rootDir)}function j(t,e){let o=d(e),n=x(t),r=o.join(" ")+n;return w.default.createHash("sha256").update(r).digest("hex").substring(0,16)}function I(t){let e=(t.join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(o=>o);return Array.from(new Set([...e].map(o=>o.trim()).map(o=>o.replace("@",""))))}var M=[];function F(t){M.push(t)}var s=i(require("chalk")),T=i(require("util"));var k=[];var G=(...t)=>{let e=T.default.format(...t);F(e),console.log(e)};var E=(...t)=>{let e=T.default.format(...t);return k.push(e),c("ERROR: ",e),G(s.default.bgRed.white(" ERROR "),e)};var lt=s.default.cyan,at=s.default.blueBright,ct=s.default.red,ut=s.default.yellow,pt=s.default.green,gt=s.default.gray,mt=s.default.white,ft=s.default.black,dt=s.default.magenta,h=s.default.dim,xt=s.default.bold;var p=c.extend("jest-discovery"),g=class{constructor(){this.specsWithoutResultsCount=0;this.fullTestSuite={}}onRunStart(e){p("onRunStart, results: %O",e),console.time(h("@currents/jest-discovery"))}onTestFileResult(e,o){let n=y(e);this.fullTestSuite[n]||(this.fullTestSuite[n]={name:n,tags:[],tests:[]});let r=x(e);p("onTestFileResult [%s][%s]",n,r),o.testResults.length===0?(p("Failed to obtain spec results, error:",r,o.failureMessage),this.specsWithoutResultsCount+=1):this.fullTestSuite[n].tests.push(...o.testResults.map(m=>{let f=d(m);return{spec:r,tags:I(f),testId:j(e,m),title:f}}))}async onRunComplete(e,o){let n=process.env.CURRENTS_DISCOVERY_PATH;if(!n)throw new Error("CURRENTS_DISCOVERY_PATH is not set");let r=[];this.specsWithoutResultsCount>0?E("Incomplete full test suite! Run the command with --debug flag."):(r=this.getFullTestSuite(e),p("onRunComplete %s, %o",n,r)),await N.default.writeFile(n,JSON.stringify(r),"utf8"),console.timeEnd(h("@currents/jest-discovery"))}getFullTestSuite(e){let o=Object.values(this.fullTestSuite),n=o.length===1,r=o.length>0&&e.size>0&&[...e][0].config.id===o[0].name;return n&&r&&(o[0].name=C()),o}};
|
|
2
2
|
/*! For license information please see reporter.js.LEGAL.txt */
|
|
3
3
|
//# sourceMappingURL=reporter.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";var Rr=Object.create;var L=Object.defineProperty;var Ir=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var Cr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var se=(e,r)=>{for(var t in r)L(e,t,{get:r[t],enumerable:!0})},ie=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of fr(r))!Tr.call(e,n)&&n!==t&&L(e,n,{get:()=>r[n],enumerable:!(o=Ir(r,n))||o.enumerable});return e};var
|
|
2
|
-
`)),Mt=R.default.cyan,yt=R.default.blueBright,vt=R.default.red,xt=R.default.yellow,wt=R.default.green,Ht=R.default.gray,Ft=R.default.white,Gt=R.default.black,kt=R.default.magenta,b=R.default.dim,jt=R.default.bold;var pe=i.extend("http"),M=e=>[3*1e3,15*1e3,30*1e3][e-1],_e=e=>(pe("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,q.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,q.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),y=()=>3;function ge(e,r,t){pe("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,z.default)(M(e)),e,y()),p("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,z.default)(M(e)),e,y())}var de=i.extend("http"),v=null;function Sr(){let e=Ie.default.create({baseURL:$(),timeout:ue(),transitional:{clarifyTimeoutError:!0}});return e.interceptors.request.use(r=>{let t=r["axios-retry"]?.retryCount??0;r.headers.get("Content-Type")||r.headers.set("Content-Type","application/json");let o={...Ce.default.pick(r,"method","url","headers"),data:Buffer.isBuffer(r.data)?"buffer":r.data};return t?de("network request retry: %o",Re({...o,isRetry:!0})):de("network request: %o",Re(o)),r}),(0,fe.default)(e,{retries:y(),retryCondition:_e,retryDelay:M,shouldResetTimeout:!0,onRetry:ge}),e}function Te(){return v||(v=Sr(),v)}function Re(e){return{method:e.method,baseUrl:$(),url:e.url,data:e.isRetry?"<retry>":Nr(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function Nr(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var Ue=require("axios"),Pe=
|
|
1
|
+
"use strict";var Rr=Object.create;var L=Object.defineProperty;var Ir=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var Cr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var se=(e,r)=>{for(var t in r)L(e,t,{get:r[t],enumerable:!0})},ie=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of fr(r))!Tr.call(e,n)&&n!==t&&L(e,n,{get:()=>r[n],enumerable:!(o=Ir(r,n))||o.enumerable});return e};var u=(e,r,t)=>(t=e!=null?Rr(Cr(e)):{},ie(r||!e||!e.__esModule?L(t,"default",{value:e,enumerable:!0}):t,e)),Or=e=>ie(L({},"__esModule",{value:!0}),e);var ft={};se(ft,{currentsReporter:()=>pt});module.exports=Or(ft);var _r=require("lodash"),V=u(require("path")),gr=u(require("semver"));var Be=require("util"),be=require("zlib");var Y=require("debug"),hr=u(require("fs-extra")),i=(0,Y.debug)("currents"),Ur=null;function ae(){Y.debug.enable("currents,currents:*")}function ce(e){Ur=e}var Ne=u(require("lodash"));var Ie=u(require("axios")),fe=u(require("axios-retry")),Ce=u(require("lodash"));var $=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",ue=()=>3e4;var q=require("axios"),z=u(require("pretty-ms"));var Pr=[];function me(e){Pr.push(e)}var R=u(require("chalk")),D=u(require("util"));var le=[],Ee=[];var Q=(...e)=>{let r=D.default.format(...e);me(r),console.log(r)},W=Q,p=(...e)=>{let r=D.default.format(...e);return Ee.push(r),i("WARNING: ",r),Q(R.default.bgYellow.black(" WARNING "),r)};var _=(...e)=>{let r=D.default.format(...e);return le.push(r),i("ERROR: ",r),Q(R.default.bgRed.white(" ERROR "),r)};var B=(e=2)=>console.log(Array(e).fill("").join(`
|
|
2
|
+
`)),Mt=R.default.cyan,yt=R.default.blueBright,vt=R.default.red,xt=R.default.yellow,wt=R.default.green,Ht=R.default.gray,Ft=R.default.white,Gt=R.default.black,kt=R.default.magenta,b=R.default.dim,jt=R.default.bold;var pe=i.extend("http"),M=e=>[3*1e3,15*1e3,30*1e3][e-1],_e=e=>(pe("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,q.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,q.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),y=()=>3;function ge(e,r,t){pe("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,z.default)(M(e)),e,y()),p("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,z.default)(M(e)),e,y())}var de=i.extend("http"),v=null;function Sr(){let e=Ie.default.create({baseURL:$(),timeout:ue(),transitional:{clarifyTimeoutError:!0}});return e.interceptors.request.use(r=>{let t=r["axios-retry"]?.retryCount??0;r.headers.get("Content-Type")||r.headers.set("Content-Type","application/json");let o={...Ce.default.pick(r,"method","url","headers"),data:Buffer.isBuffer(r.data)?"buffer":r.data};return t?de("network request retry: %o",Re({...o,isRetry:!0})):de("network request: %o",Re(o)),r}),(0,fe.default)(e,{retries:y(),retryCondition:_e,retryDelay:M,shouldResetTimeout:!0,onRetry:ge}),e}function Te(){return v||(v=Sr(),v)}function Re(e){return{method:e.method,baseUrl:$(),url:e.url,data:e.isRetry?"<retry>":Nr(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function Nr(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var Ue=require("axios"),Pe=u(require("lodash")),g=require("ts-pattern");function Ae(e){(0,g.match)(e).when(Ue.isAxiosError,Lr).otherwise(()=>{p("Unexpected error while sending network request: %s",e)})}function Lr(e){return(0,g.match)(e).with({code:"ECONNABORTED"},()=>{p("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{p("Network connection aborted")}).with({code:"ECONNRESET"},()=>{p("Network connection reset")}).with({code:"ETIMEDOUT"},()=>{p("Network connection timeout")}).with({response:g.P.not(g.P.nullish)},r=>{Dr(r,{status:r.response.status,data:r.response.data})}).otherwise(r=>{p(`[currents] Unexpected network error: %s
|
|
3
3
|
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function Dr(e,{status:r,data:t}){(0,g.match)(r).with(401,()=>{p(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{p(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service:
|
|
4
4
|
%o`,t)}).with(429,()=>{p(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Br(e,t)}).otherwise(()=>{p(`[currents] Unexpected network response: %s
|
|
5
|
-
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function Br(e,r){(0,g.match)(r).with({code:
|
|
6
|
-
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var
|
|
5
|
+
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function Br(e,r){(0,g.match)(r).with({code:Oe.MISSING_SUITE,message:g.P.string,errors:g.P.array(g.P.string)},async t=>{let{message:o,errors:n}=t;B(1),_(...he(o,n))}).with({code:Oe.RUN_EXPIRED,message:g.P.string},t=>{p(t.message)}).with({message:g.P.string,errors:g.P.array(g.P.string)},t=>{let{message:o,errors:n}=t;B(1),p(...he(o,n)),B(1)}).otherwise(()=>{p(`[currents] Unexpected network response: %s
|
|
6
|
+
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var Oe={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function he(e,r){return Pe.default.isString(e)?r?.length===0?[e]:[e,`
|
|
7
7
|
${(r??[]).map(t=>` - ${t}`).join(`
|
|
8
8
|
`)}
|
|
9
|
-
`]:["Unexpected network error"]}var Se=i.extend("http");async function Le(e,r=Te){try{let t=await r().request(e);return Se("network response: %o",{...Ne.default.omit(t,"request","config"),url:t.config.url,method:t.config.method}),t}catch(t){let o=t;throw Se("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),Ae(o),o}}var De=i.extend("run"),br=(0,Be.promisify)(be.gzip);async function Me(e){try{De("Run params: %o",e);let r=await Mr(JSON.stringify(e));return Le({url:"v2/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:r}).then(t=>t.data)}catch(r){throw De("Failed to create the run:",r),r}}async function Mr(e){try{return await br(e)}catch(r){throw _("Failed to compress run payload:",r),r}}var yr=m(require("fs"));var Ko=i.extend("config");var vr=null;function ye(){return vr}var Qe=m(require("fs-extra")),We=require("jest-cli"),qe=m(require("tmp"));var T=m(require("fs-extra")),S=m(require("path"));async function ve(e){let r=await xr(e?.reportDir);if(!r)throw new Error("Failed to find the report dir");return{reportDir:r,configFilePath:e?.configFilePath??S.default.join(r,"config.json")}}async function xr(e){return e?(await x(e),e):wr(process.cwd(),".currents-report")}async function wr(e,r){let t=await T.default.readdir(e),o=null;for(let n of t){let a=S.default.join(e,n),c=await T.default.stat(a);c.isDirectory()&&n.startsWith(r)&&(!o||c.birthtime>o.birthtime)&&(o={name:n,birthtime:c.birthtime})}return o?o.name:null}async function x(e){try{return await T.default.pathExists(e)}catch{return _("Error checking if path exists:",_),!1}}async function xe(e){let r=S.default.join(e,"instances");return Hr(r)}async function Hr(e){let r=await T.default.readdir(e),t=[];for(let o of r){let n=S.default.join(e,o);(await T.default.stat(n)).isFile()&&t.push(n)}return t}async function O(e){try{return await T.default.readJson(e)}catch(r){throw _("Error while reading JSON file: %s",e,r),_}}async function X(e,r){try{return await T.default.writeFile(e,r,"utf8"),e}catch(t){throw _(`Error writing file at ${e}:`,t),t}}var w={};se(w,{getNanoid:()=>Fr,userFacingNanoid:()=>ee});var Z=require("nanoid"),we="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Fr=(e=16)=>(0,Z.customAlphabet)(we,e)(),ee=(0,Z.customAlphabet)(we,12);var Ye=require("lodash");var He=require("lodash"),Gr=["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 Fe(e){return(0,He.omit)(e,...Gr)}function Ge(e){let r=[];for(let[t,o]of Object.entries(e))t==="_"||t==="$0"||t.includes("-")||(typeof o=="boolean"?o&&r.push(`--${t}`):Array.isArray(o)?o.forEach(n=>{r.push(`--${t}=${n}`)}):r.push(`--${t}=${o}`));return r.join(" ")}var Ve=m(require("fs")),Ke=require("jest-config"),re=require("lodash"),te=m(require("path"));function H(e,r){return(...t)=>new Promise((o,n)=>{let a=0,c=()=>{a++;try{let E=e(...t);o(E)}catch(E){if(a>=r.length)n(E);else{let d=r[a-1];setTimeout(c,d)}}};c()})}var ke=m(require("fs-extra")),kr=m(require("path"));async function F(e){let r=await ke.default.pathExists(e);if(!r)throw new Error("File does not exist");return r}var je=i.extend("jest-discovery");async function Je(e){try{let{config:r,configPath:t}=await(0,Ke.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,re.omit)(r,o);if(a.projects&&(a.projects=a.projects.map(d=>typeof d!="string"?(0,re.omit)(d,n):d)),a.rootDir&&Object.keys(a).length===1)return null;let c=te.default.resolve(t?te.default.dirname(t):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),E=`module.exports=${JSON.stringify(a,null,2)}`;return je("configFileContent: %O",E),Ve.default.writeFileSync(c,E),await H(F,[200,200,200,200,200,1e3])(c),c}catch(r){return _("Failed to recreate the config file"),je("error %o",r),null}}async function $e(e){let r="!!##ThisPatternWillNotMatchAnyTestName##!!",t=e.options,o=Fe(t),n=Ge(o),a=t.config,c=await Je(a);return{cliArgs:[n,"--testNamePattern",r,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",c?`--config=${c}`:"",...e.args].filter(d=>!(0,Ye.isEmpty)(d)),configFilePath:c}}var jr=i.extend("jest-discovery");async function ze(e,r){console.time(b("@currents/jest:fullTestSuite-ready"));let{cliArgs:t,configFilePath:o}=await $e(r);try{let n=qe.default.fileSync({postfix:".json"});return jr("running scanner: %o",t),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,We.run)(t.concat(["--openHandlesTimeout=0"])),await H(F,Array.from({length:300},()=>100))(n.name),console.timeEnd(b("@currents/jest:fullTestSuite-ready")),await O(n.name)}catch(n){return _("Failed to obtain the jest full test suite:",n),[]}finally{o&&Qe.default.unlinkSync(o)}}var A=class{constructor(r){this.config=r}async getFullTestSuite(){return[]}};var G=class extends A{constructor(r){super(r)}async getFullTestSuite(){return ze(this.config.frameworkConfig,this.config.cliArgs)}};function Xe(e){switch(e.framework){case"jest":return new G(e);default:return new A(e)}}var l=require("lodash");var k=i.extend("ci"),Vr=(e,...r)=>(0,l.chain)(r).compact().join(e).value(),Kr=(e,r)=>(0,l.set)(e,(0,l.camelCase)(r),process.env[r]),u=e=>(0,l.transform)(e,Kr,{}),Jr=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Yr=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,$r=()=>(0,l.some)(process.env,(e,r)=>/^CODEBUILD_/.test(r)),Qr=()=>process.env.bamboo_buildNumber,Wr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,qr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,zr=()=>(0,l.some)(process.env,(e,r)=>/^CONCOURSE_/.test(r)),Xr=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Zr=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,et=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,rt=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,tt={appveyor:"APPVEYOR",azure:Yr,awsCodeBuild:$r,bamboo:Qr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Wr,codeshipPro:qr,concourse:zr,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Xr,goCD:"GO_JOB_NAME",googleCloud:Zr,jenkins:et,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:Jr,travis:"TRAVIS",wercker:rt,netlify:"NETLIFY",layerci:"LAYERCI"};function ot(){let{env:e}=process;return(0,l.findKey)(tt,r=>{if((0,l.isString)(r))return e[r];if((0,l.isFunction)(r))return r()})}var Ze=()=>({appveyor:u(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:u(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:u(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:u(["BITBUCKET_REPO_SLUG","BITBUCKET_REPO_OWNER","BITBUCKET_BUILD_NUMBER","BITBUCKET_PARALLEL_STEP","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT"]),buildkite:u(["BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH"]),circle:u(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:u(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:u(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:u(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:u(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:u(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:u(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:u(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH"]),goCD:u(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:u(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:u(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:u(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]),shippable:u(["SHIPPABLE_BUILD_ID","SHIPPABLE_BUILD_NUMBER","SHIPPABLE_COMMIT_RANGE","SHIPPABLE_CONTAINER_NAME","SHIPPABLE_JOB_ID","SHIPPABLE_JOB_NUMBER","SHIPPABLE_REPO_SLUG","IS_FORK","IS_GIT_TAG","IS_PRERELEASE","IS_RELEASE","REPOSITORY_URL","REPO_FULL_NAME","REPO_NAME","BUILD_URL","BASE_BRANCH","HEAD_BRANCH","IS_PULL_REQUEST","PULL_REQUEST","PULL_REQUEST_BASE_BRANCH","PULL_REQUEST_REPO_FULL_NAME"]),teamcity:null,teamfoundation:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:u(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),wercker:null,netlify:u(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:u(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),nt=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Vr(`
|
|
10
|
-
`,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}}},er=e=>{let r=rr();return r?(0,
|
|
9
|
+
`]:["Unexpected network error"]}var Se=i.extend("http");async function Le(e,r=Te){try{let t=await r().request(e);return Se("network response: %o",{...Ne.default.omit(t,"request","config"),url:t.config.url,method:t.config.method}),t}catch(t){let o=t;throw Se("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),Ae(o),o}}var De=i.extend("run"),br=(0,Be.promisify)(be.gzip);async function Me(e){try{De("Run params: %o",e);let r=await Mr(JSON.stringify(e));return Le({url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:r}).then(t=>t.data)}catch(r){throw De("Failed to create the run:",r),r}}async function Mr(e){try{return await br(e)}catch(r){throw _("Failed to compress run payload:",r),r}}var yr=u(require("fs"));var Ko=i.extend("config");var vr=null;function ye(){return vr}var Qe=u(require("fs-extra")),We=require("jest-cli"),qe=u(require("tmp"));var O=u(require("fs-extra")),T=u(require("path"));async function ve(e){let r=await xr(e?.reportDir);if(!r)throw new Error("Failed to find the report dir");return{reportDir:r,configFilePath:e?.configFilePath??T.default.join(r,"config.json")}}async function xr(e){return e?(await x(e),e):wr((0,T.join)(process.cwd(),".currents"))}async function wr(e){let r=await O.default.readdir(e),t=null;for(let o of r){let n=T.default.join(e,o),a=await O.default.stat(n);a.isDirectory()&&(!t||a.birthtime>t.birthtime)&&(t={name:o,birthtime:a.birthtime})}return t?(0,T.resolve)(e,t.name):null}async function x(e){try{return await O.default.pathExists(e)}catch{return _("Error checking if path exists:",_),!1}}async function xe(e){let r=T.default.join(e,"instances");return Hr(r)}async function Hr(e){let r=await O.default.readdir(e),t=[];for(let o of r){let n=T.default.join(e,o);(await O.default.stat(n)).isFile()&&t.push(n)}return t}async function U(e){try{return await O.default.readJson(e)}catch(r){throw _("Error while reading JSON file: %s",e,r),_}}async function X(e,r){try{return await O.default.writeFile(e,r,"utf8"),e}catch(t){throw _(`Error writing file at ${e}:`,t),t}}var w={};se(w,{getNanoid:()=>Fr,userFacingNanoid:()=>ee});var Z=require("nanoid"),we="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Fr=(e=16)=>(0,Z.customAlphabet)(we,e)(),ee=(0,Z.customAlphabet)(we,12);var Ye=require("lodash");var He=require("lodash"),Gr=["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 Fe(e){return(0,He.omit)(e,...Gr)}function Ge(e){let r=[];for(let[t,o]of Object.entries(e))t==="_"||t==="$0"||t.includes("-")||(typeof o=="boolean"?o&&r.push(`--${t}`):Array.isArray(o)?o.forEach(n=>{r.push(`--${t}=${n}`)}):r.push(`--${t}=${o}`));return r.join(" ")}var Ve=u(require("fs")),Ke=require("jest-config"),re=require("lodash"),te=u(require("path"));function H(e,r){return(...t)=>new Promise((o,n)=>{let a=0,l=()=>{a++;try{let E=e(...t);o(E)}catch(E){if(a>=r.length)n(E);else{let d=r[a-1];setTimeout(l,d)}}};l()})}var ke=u(require("fs-extra")),kr=u(require("path"));async function F(e){let r=await ke.default.pathExists(e);if(!r)throw new Error("File does not exist");return r}var je=i.extend("jest-discovery");async function Je(e){try{let{config:r,configPath:t}=await(0,Ke.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,re.omit)(r,o);if(a.projects&&(a.projects=a.projects.map(d=>typeof d!="string"?(0,re.omit)(d,n):d)),a.rootDir&&Object.keys(a).length===1)return null;let l=te.default.resolve(t?te.default.dirname(t):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),E=`module.exports=${JSON.stringify(a,null,2)}`;return je("configFileContent: %O",E),Ve.default.writeFileSync(l,E),await H(F,[200,200,200,200,200,1e3])(l),l}catch(r){return _("Failed to recreate the config file"),je("error %o",r),null}}async function $e(e){let r="!!##ThisPatternWillNotMatchAnyTestName##!!",t=e.options,o=Fe(t),n=Ge(o),a=t.config,l=await Je(a);return{cliArgs:[n,"--testNamePattern",r,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",l?`--config=${l}`:"",...e.args].filter(d=>!(0,Ye.isEmpty)(d)),configFilePath:l}}var jr=i.extend("jest-discovery");async function ze(e,r){console.time(b("@currents/jest:fullTestSuite-ready"));let{cliArgs:t,configFilePath:o}=await $e(r);try{let n=qe.default.fileSync({postfix:".json"});return jr("running scanner: %o",t),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,We.run)(t.concat(["--openHandlesTimeout=0"])),await H(F,Array.from({length:300},()=>100))(n.name),console.timeEnd(b("@currents/jest:fullTestSuite-ready")),await U(n.name)}catch(n){return _("Failed to obtain the jest full test suite:",n),[]}finally{o&&Qe.default.unlinkSync(o)}}var S=class{constructor(r){this.config=r}async getFullTestSuite(){return[]}};var G=class extends S{constructor(r){super(r)}async getFullTestSuite(){return ze(this.config.frameworkConfig,this.config.cliArgs)}};function Xe(e){switch(e.framework){case"jest":return new G(e);default:return new S(e)}}var m=require("lodash");var k=i.extend("ci"),Vr=(e,...r)=>(0,m.chain)(r).compact().join(e).value(),Kr=(e,r)=>(0,m.set)(e,(0,m.camelCase)(r),process.env[r]),c=e=>(0,m.transform)(e,Kr,{}),Jr=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Yr=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,$r=()=>(0,m.some)(process.env,(e,r)=>/^CODEBUILD_/.test(r)),Qr=()=>process.env.bamboo_buildNumber,Wr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,qr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,zr=()=>(0,m.some)(process.env,(e,r)=>/^CONCOURSE_/.test(r)),Xr=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Zr=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,et=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,rt=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,tt={appveyor:"APPVEYOR",azure:Yr,awsCodeBuild:$r,bamboo:Qr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Wr,codeshipPro:qr,concourse:zr,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Xr,goCD:"GO_JOB_NAME",googleCloud:Zr,jenkins:et,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:Jr,travis:"TRAVIS",wercker:rt,netlify:"NETLIFY",layerci:"LAYERCI"};function ot(){let{env:e}=process;return(0,m.findKey)(tt,r=>{if((0,m.isString)(r))return e[r];if((0,m.isFunction)(r))return r()})}var Ze=()=>({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","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH"]),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"])}),nt=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Vr(`
|
|
10
|
+
`,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}}},er=e=>{let r=rr();return r?(0,m.chain)(e()).get(r).value():{}};function st(){return(0,m.chain)(Ze()).omitBy(m.isNull).keys().value()}function it(e){return e&&st().includes(e)}function rr(){let e=ot();return k("detected CI provider name: %s",e),e||null}function at(){return er(Ze)}function tr(){return er(nt)}function or(e){let r=at(),t=rr(),o=ct(e,t);return k("detected CI provider: %s",t),k("detected CI params: %O",r),k("detected CI build ID: %o",o),{params:r,provider:t,ciBuildId:o}}function ct(e,r){return e?{source:"user",value:e}:it(r)?{source:"server",value:null}:{source:"random",value:`auto:${ee()}`}}var sr=require("@currents/commit-info"),ir=require("lodash");var j=require("lodash");var oe=i.extend("ci-git");function nr(e){oe("git commit existing info: %O",e);let r=tr();oe("commit info from provider environment variables: %O",r);let t=(0,j.transform)(e,(o,n,a)=>{let l=n||(r?r[a]:null);return o[a]=(0,j.defaultTo)(l,null)});return oe("combined git and environment variables from provider: %O",t),t}var ut=async()=>{let e=await(0,sr.commitInfo)();return nr({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},ar=(0,ir.memoize)(ut);var cr=u(require("getos")),ur=require("lodash"),I=require("os"),mr=require("util"),mt=async()=>{if((0,I.platform)()==="linux")try{let e=await(0,mr.promisify)(cr.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)()},lt=async()=>{let e=await mt();return{osName:(0,I.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,I.freemem)(),total:(0,I.totalmem)()}}},lr=(0,ur.memoize)(lt);var Er={name:"@currents/cmd",version:"1.0.4",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/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/semver":"^7.5.8","@types/tmp":"^0.2.6","@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",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",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0"},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/discovery/jest/reporter.js",require:"./dist/discovery/jest/reporter.js",types:"./dist/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 pr=Er.version;async function pt(){let e=ye();if(!e)throw new Error("Currents config is missing!");e.debug&&ae();let r=await ve(e);ce(Rt(r.reportDir)),i("Reporter options: %o",r),W("Report directory: %s",r.reportDir);let t=await U(r.configFilePath);i("Report config: %o",t);let o=await xe(r.reportDir);i("Found %d instance results in the reportDir: %s",o.length,r.reportDir);let n=gt(r.reportDir),a=await x(n),l=dt(r.reportDir),E=null;if(a){let f=await U(n);p("Marker file detected. The report was already uploaded: %o",{runUrl:f.response.runUrl,isoDate:f.isoDate}),await x(l)&&(E=await U(l),i("Full test suite file detected: %s",l))}if(E)i("The discovery stage was skipped");else{if(E=await Xe(t).getFullTestSuite(),It(E))throw new Error("Failed to discover the full test suite!");await X(l,JSON.stringify(E))}let d=E.length===1?E[0].name:null,K={currents:e},P={type:t.framework,version:t.frameworkVersion,clientVersion:pr},ne=w.userFacingNanoid(),N=or(e.ciBuildId),h={};for await(let f of o){let C=await U(f);h[C.groupId]||(h[C.groupId]=[]),h[C.groupId].push(C)}for await(let f of Object.keys(h)){let C=h[f],J=f;d&&(i("Default group found: %s, overwriting the group in the results",d),J=d,C=C.map(A=>({...A,groupId:d})));try{let A=await _t({ci:N,group:J,instances:C,fullTestSuite:E,config:K,machineId:ne,framework:P});i("Api response: %o",A),W("[%s] Run created: %s",J,A.runUrl);let dr={response:A,isoDate:new Date().toISOString()};await X(n,JSON.stringify(dr)),i("Marker file %s: %s",a?"overwritten":"created",n)}catch{throw new Error("Failed to upload the results to the dashboard")}}}async function _t({ci:e,group:r,instances:t,fullTestSuite:o,config:n,machineId:a,framework:l}){let E=await ar(),d=await lr(),K={browserName:"node",browserVersion:gr.default.coerce(process.version)?.version},{currents:P}=n,N={platform:{...K,...d},ci:e,commit:E,group:r,fullTestSuite:o,config:n,projectId:P.projectId,recordKey:P.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:P.tag??[],machineId:P.machineId??a,framework:l,instances:t};return i("Creating run: %o",(0,_r.mapValues)(N,(h,f)=>f==="recordKey"?"******":h)),Me(N)}function gt(e){return V.default.join(e,"upload.marker.json")}function dt(e){return V.default.join(e,"fullTestSuite.json")}function Rt(e){return V.default.join(e,`.debug-${new Date().toISOString()}.log`)}function It(e){return e.length===0||e.some(r=>r.tests.length===0)}0&&(module.exports={currentsReporter});
|
|
11
11
|
/*! For license information please see index.js.LEGAL.txt */
|
|
12
12
|
//# sourceMappingURL=index.js.map
|