@visulima/task-runner 1.0.0-alpha.14 → 1.0.0-alpha.16

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/index.d.ts +191 -3
  3. package/dist/index.js +1 -1
  4. package/dist/packem_chunks/index.js +30 -10
  5. package/dist/packem_shared/{FileAccessTracker-DSNf03JW.js → FileAccessTracker-IG-Z0Ijw.js} +4 -4
  6. package/dist/packem_shared/HttpRemoteCache-D3Z6b_FO.js +1 -0
  7. package/dist/packem_shared/TaskOrchestrator-F_NrcUYn.js +2 -0
  8. package/dist/packem_shared/TrackedTaskExecutor-BiK0Coso.js +2 -0
  9. package/dist/packem_shared/collectNodeModulesBinDirs-JaeFLP9l.js +1 -0
  10. package/dist/packem_shared/createTaskGraph-D6nPDd4s.js +1 -0
  11. package/dist/packem_shared/defaultTaskRunner-CjaCnt_W.js +2 -0
  12. package/dist/packem_shared/{expandArguments-4mab7-Ds.js → expandArguments-D7qvc6Rp.js} +1 -1
  13. package/dist/packem_shared/{expandTokensInString-Cyx0qSFA.js → expandTokensInString-DVSFEdWu.js} +1 -1
  14. package/dist/packem_shared/{parseCommands-b1K2vIxj.js → parseCommands-BHsXoUCd.js} +1 -1
  15. package/dist/packem_shared/{resolveCacheMode-DXe7i-tj.js → resolveCacheMode-DEDFC-kM.js} +1 -1
  16. package/dist/packem_shared/runConcurrentFallback-SvS4ElEX.js +3 -0
  17. package/dist/packem_shared/runConcurrently-ebFf3uYs.js +1 -0
  18. package/dist/packem_shared/runTeardown-CiJJeWVf.js +1 -0
  19. package/dist/packem_shared/shell-quote-BhmqDUL1.js +1 -0
  20. package/index.js +556 -729
  21. package/package.json +12 -14
  22. package/dist/packem_shared/HttpRemoteCache-Ch-_9ejF.js +0 -1
  23. package/dist/packem_shared/TaskOrchestrator-CXeojk7n.js +0 -2
  24. package/dist/packem_shared/TrackedTaskExecutor-D3-LNT_d.js +0 -2
  25. package/dist/packem_shared/createTaskGraph-CEYYI-DL.js +0 -1
  26. package/dist/packem_shared/defaultTaskRunner-Byi0zsgh.js +0 -2
  27. package/dist/packem_shared/runConcurrentFallback-Dpqxuyv-.js +0 -3
  28. package/dist/packem_shared/runConcurrently-DYbMGyGv.js +0 -1
  29. package/dist/packem_shared/runTeardown-DBBpBAyb.js +0 -1
  30. package/dist/packem_shared/shell-quote-CksLqyXK.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/task-runner",
3
- "version": "1.0.0-alpha.14",
3
+ "version": "1.0.0-alpha.16",
4
4
  "description": "A task runner with caching support for monorepo workspaces",
5
5
  "keywords": [
6
6
  "cache",
@@ -12,9 +12,7 @@
12
12
  "workspace"
13
13
  ],
14
14
  "homepage": "https://visulima.com/packages/task-runner",
15
- "bugs": {
16
- "url": "https://github.com/visulima/visulima/issues"
17
- },
15
+ "bugs": "https://github.com/visulima/visulima/issues",
18
16
  "repository": {
19
17
  "type": "git",
20
18
  "url": "git+https://github.com/visulima/visulima.git",
@@ -53,8 +51,8 @@
53
51
  ],
54
52
  "dependencies": {
55
53
  "@lydell/node-pty": "1.2.0-beta.12",
56
- "@visulima/humanizer": "3.0.0-alpha.11",
57
- "@visulima/path": "3.0.0-alpha.10",
54
+ "@visulima/humanizer": "3.0.0-alpha.12",
55
+ "@visulima/path": "3.0.0-alpha.11",
58
56
  "nanotar": "^0.3.0"
59
57
  },
60
58
  "peerDependencies": {
@@ -70,14 +68,14 @@
70
68
  }
71
69
  },
72
70
  "optionalDependencies": {
73
- "@visulima/task-runner-binding-darwin-x64": "1.0.0-alpha.14",
74
- "@visulima/task-runner-binding-linux-arm64-gnu": "1.0.0-alpha.14",
75
- "@visulima/task-runner-binding-linux-arm64-musl": "1.0.0-alpha.14",
76
- "@visulima/task-runner-binding-darwin-arm64": "1.0.0-alpha.14",
77
- "@visulima/task-runner-binding-linux-x64-gnu": "1.0.0-alpha.14",
78
- "@visulima/task-runner-binding-linux-x64-musl": "1.0.0-alpha.14",
79
- "@visulima/task-runner-binding-win32-arm64-msvc": "1.0.0-alpha.14",
80
- "@visulima/task-runner-binding-win32-x64-msvc": "1.0.0-alpha.14"
71
+ "@visulima/task-runner-binding-darwin-arm64": "1.0.0-alpha.16",
72
+ "@visulima/task-runner-binding-darwin-x64": "1.0.0-alpha.16",
73
+ "@visulima/task-runner-binding-linux-arm64-gnu": "1.0.0-alpha.16",
74
+ "@visulima/task-runner-binding-linux-arm64-musl": "1.0.0-alpha.16",
75
+ "@visulima/task-runner-binding-linux-x64-gnu": "1.0.0-alpha.16",
76
+ "@visulima/task-runner-binding-linux-x64-musl": "1.0.0-alpha.16",
77
+ "@visulima/task-runner-binding-win32-arm64-msvc": "1.0.0-alpha.16",
78
+ "@visulima/task-runner-binding-win32-x64-msvc": "1.0.0-alpha.16"
81
79
  },
82
80
  "engines": {
83
81
  "node": "^22.14.0 || >=24.10.0"
@@ -1 +0,0 @@
1
- var A=Object.defineProperty;var f=(r,t)=>A(r,"name",{value:t,configurable:!0});import{createRequire as S}from"node:module";import{join as u}from"@visulima/path";import{fetchBlobToFile as T,putBlobFromFile as k}from"./containsBlob-DBWgvkM_.js";import{O as v}from"./utils-BH2W5Wml.js";const C=S(import.meta.url),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=f(r=>{if(typeof c<"u"&&c.versions&&c.versions.node){const[t,e]=c.versions.node.split(".").map(Number);if(t>22||t===22&&e>=3||t===20&&e>=16)return c.getBuiltinModule(r)}return C(r)},"__cjs_getBuiltinModule"),{createHmac:x,timingSafeEqual:B,createHash:R}=l("node:crypto"),{createWriteStream:g,createReadStream:p}=l("node:fs"),{mkdir:y,rm:w,stat:j}=l("node:fs/promises"),{tmpdir:F}=l("node:os"),{pipeline:b}=l("node:stream/promises");var E=Object.defineProperty,d=f((r,t)=>E(r,"name",{value:t,configurable:!0}),"c");const m="X-Artifact-Signature",$=16,z="vis-entry.tar.gz",H=d(async r=>{const t=R("sha256");let e=0;for await(const s of p(r)){const i=s;t.update(i),e+=i.byteLength}return{hash:t.digest("hex"),sizeBytes:e}},"digestFile"),_=d(async(r,t,e)=>{const s=x("sha256",r);s.update(t);const i=p(e);for await(const a of i)s.update(a);return s.digest("hex")},"computeArtifactSignatureStream"),q=d((r,t)=>{if(r.length!==t.length)return!1;try{return B(Buffer.from(r,"hex"),Buffer.from(t,"hex"))}catch{return!1}},"signaturesMatch");class L{static{f(this,"x")}static{d(this,"HttpRemoteCache")}#u;#i;#r;#s;#a;#l;#f;#d;#t;#n;#e;#o=new Map;constructor(t){this.#u=t.url.replace(/\/$/,""),this.#i=t.token,this.#r=t.teamId,this.#s=t.timeout??3e4;const e=t.mode??"readwrite";if(this.#a=e==="read"||e==="readwrite",this.#l=e==="write"||e==="readwrite",this.#f=t.onUploadError,this.#d=t.compression??"gzip",this.#e=t.localCasRoot,t.signing){if(t.signing.secret.length<$)throw new Error(`Remote cache signing secret must be at least ${String($)} characters.`);this.#t=t.signing.secret,this.#n=t.signing.verifyOnDownload??!1}else this.#t=void 0,this.#n=!1}async close(){}async containsAction(t){if(!this.#a)return!1;try{const e=this.#h(`/v8/artifacts/${t.hash}`);return(await fetch(e,{headers:this.#c(),method:"HEAD",signal:AbortSignal.timeout(this.#s)})).ok}catch{return!1}}async fetchBlob(t,e){return this.#e?T(this.#e,t,e):!1}async retrieveAction(t){if(!this.#a||!this.#e)return null;const e=u(this.#e,"v2","tmp"),s=u(e,`.remote-${t.hash}-${v()}`);try{await y(e,{recursive:!0});const i=this.#h(`/v8/artifacts/${t.hash}`),a=await fetch(i,{headers:this.#c(),method:"GET",signal:AbortSignal.timeout(this.#s)});if(!a.ok||!a.body)return null;const n=this.#t?a.headers.get(m.toLowerCase())??a.headers.get(m):null;if(this.#t&&!n&&this.#n)return null;if(await b(a.body,g(s)),this.#t&&n){const h=await _(this.#t,t.hash,s);if(!q(n,h))return null}const o=await H(s);return await k(this.#e,o,s),{exitCode:0,outputDirectories:[],outputFiles:[{digest:o,isExecutable:!1,path:z}]}}catch{return null}finally{await w(s,{force:!0}).catch(()=>{})}}async storeAction(t,e,s){if(!this.#l||e.outputFiles.length!==1||s.length===0)return!1;const i=e.outputFiles[0];if(!i)return!1;const a=s.find(h=>h.digest.hash===i.digest.hash);if(!a)return!1;const n=this.#o.get(t.hash);if(n)return n;const o=this.#m(t,a).finally(()=>{this.#o.delete(t.hash)});return this.#o.set(t.hash,o),o}async#m(t,e){const s=this.#e?u(this.#e,"v2","tmp"):u(F(),"visulima-task-runner-uploads"),i=u(s,`.upload-${t.hash}-${v()}`);try{await y(s,{recursive:!0});const a=await e.open();await b(a,g(i));const n=this.#h(`/v8/artifacts/${t.hash}`),{size:o}=await j(i),h={...this.#c(),"Content-Length":String(o),"Content-Type":"application/octet-stream","X-Artifact-Compression":this.#d};return this.#t&&(h[m]=await _(this.#t,t.hash,i)),(await fetch(n,{body:p(i),duplex:"half",headers:h,method:"PUT",signal:AbortSignal.timeout(this.#s)})).ok}catch(a){return this.#f?.(t.hash,a),!1}finally{await w(i,{force:!0}).catch(()=>{})}}#h(t){const e=`${this.#u}${t}`;return this.#r?`${e}?teamId=${encodeURIComponent(this.#r)}`:e}#c(){const t={};return this.#i&&(t.Authorization=`Bearer ${this.#i}`),t}}export{L as HttpRemoteCache};
@@ -1,2 +0,0 @@
1
- var C=Object.defineProperty;var k=(r,t)=>C(r,"name",{value:t,configurable:!0});import{j as w,v as O,f as R}from"./utils-BH2W5Wml.js";import{resolve as j,join as M}from"@visulima/path";import{retrieveByTaskHash as E,storeByTaskHash as F}from"./actionDigestForTaskHash-BOL4fZ9v.js";import{FingerprintManager as H}from"./FingerprintManager-CYW2EwLc.js";import{generateRunSummary as x,writeLastRunSummary as $,writeRunSummary as I}from"./generateRunSummary-beN13GH4.js";import{computeTaskHash as P}from"./computeTaskHash-Xxd8v-X3.js";import{TrackedTaskExecutor as W}from"./TrackedTaskExecutor-D3-LNT_d.js";import{getCurrentBranch as A,evaluateWhen as L,explainWhen as G}from"./getCurrentBranch-D-qoZByx.js";var N=Object.defineProperty,l=k((r,t)=>N(r,"name",{value:t,configurable:!0}),"l");const z=l(r=>{const t=R();t.update(r.commandHash);for(const s of Object.keys(r.fileHashes).toSorted())t.update(s),t.update(r.fileHashes[s]);for(const s of r.missingFiles)t.update(`missing:${s}`);for(const s of Object.keys(r.directoryListings).toSorted())t.update(`dir:${s}`),t.update(JSON.stringify(r.directoryListings[s]));for(const s of Object.keys(r.envHashes).toSorted())t.update(s),t.update(r.envHashes[s]);return t.digest()},"hashFingerprint"),b=l((r,t)=>{if(!r||r.length===0||!t)return!1;for(const s of r)try{if(new RegExp(s).test(t))return!0}catch{}return!1},"detectWarnings"),g=l(()=>{let r;return{promise:new Promise(t=>{r=t}),resolve:r}},"createDeferred");class Z{static{k(this,"z")}static{l(this,"TaskOrchestrator")}#r;#i;#h;#t;#f;#a;#m;#p;#w;#e;#n;#k;#g;#d;#S;#c;#C;#R;#j;#y;#T;#s=new Map;#M;#v;#O;#o=new Map;#u=g();#l=!1;constructor(t){this.#r=t.taskHasher,this.#i=t.cache,this.#h=t.scheduler,this.#t=t.lifeCycle,this.#f=t.taskExecutor,this.#a=t.workspaceRoot,this.#m=t.skipCache??!1,this.#p=t.captureOutput??!0,this.#w=t.autoFingerprint??!1,this.#k=t.fingerprintEnvPatterns??[],this.#g=t.untrackedEnvVars??[],this.#d=t.cacheDiagnostics??!1,this.#S=t.resolveCommand??void 0,this.#c=t.remoteCache??void 0,this.#C=t.onRemoteUploadError??void 0,this.#R=t.dryRun??!1,this.#j=t.summarize??!1,this.#y=t.dataDirectory,this.#T=t.taskGraph??void 0,this.#M=Date.now(),this.#v=t.alwaysTasks??[],this.#O=t.whenContext??{branch:A(t.workspaceRoot)},this.#w?(this.#e=new H(t.workspaceRoot),this.#n=new W(t.workspaceRoot)):(this.#e=void 0,this.#n=void 0)}async run(){this.#t.startCommand?.();const t=l(()=>{this.#l=!0,this.#n?.killAll()},"signalHandler");process.on("SIGINT",t),process.on("SIGTERM",t);try{await this.#x(),this.#v.length>0&&!this.#l&&await this.#H()}finally{process.removeListener("SIGINT",t),process.removeListener("SIGTERM",t),this.#t.endCommand?.()}if(this.#T&&!this.#l){const s=x(this.#s,this.#T,this.#M);await $(s,this.#a,{dataDirectory:this.#y}),this.#j&&await I(s,this.#a,{dataDirectory:this.#y})}return this.#s}async#H(){for(const t of this.#v){this.#t.scheduleTask?.(t),this.#t.startTasks?.([t]);let s;if(this.#E(t))s=this.#F(t);else{const e=Date.now();try{s=await this.#D(t,e)}catch(i){s=w(t,i,e),this.#s.set(t.id,s)}}this.#t.endTasks?.([s]),s.terminalOutput&&this.#t.printTaskTerminalOutput?.(s.task,s.status,s.terminalOutput)}}async#x(){for(;!this.#h.isComplete()&&!this.#l;){const t=this.#h.getNextBatch();if(t.length===0){if(this.#o.size>0){await this.#u.promise,this.#u=g();continue}if(this.#h.remainingCount>0)throw new Error("Deadlock detected: tasks remain but none can be scheduled. This may indicate a circular dependency.");break}for(const s of t)this.#t.scheduleTask?.(s),this.#h.startTask(s.id);this.#t.startTasks?.(t);for(const s of t){const e=(this.#E(s)?Promise.resolve(this.#F(s)):this.#w?this.#I(s):this.#$(s)).catch(i=>{const a=w(s,i,Date.now());return this.#s.set(s.id,a),a}).then(i=>(this.#o.delete(s.id),this.#h.completeTask(s.id),this.#t.endTasks?.([i]),i.terminalOutput&&this.#t.printTaskTerminalOutput?.(i.task,i.status,i.terminalOutput),this.#u.resolve(),i));this.#o.set(s.id,e)}this.#o.size>0&&(await this.#u.promise,this.#u=g())}this.#o.size>0&&await Promise.all(this.#o.values())}async#$(t){const s=Date.now(),e=await this.#r.hashTask(t),i=P(e);if(Object.assign(t,{hash:i,hashDetails:e}),this.#R)return this.#G(t,s);if(!this.#m&&t.cache!==!1){const h=await this.#i.get(i);if(h)return this.#b(t,h,s);if(this.#c&&await E(this.#c,i,this.#i.cacheDirectory)){const n=await this.#i.get(i);if(n){const c=await this.#b(t,n,s);return c.status="remote-cache",c}}}const a=await this.#D(t,s);return a.code===0&&t.cache!==!1&&t.hash&&this.#c&&F(this.#c,t.hash,this.#i.cacheDirectory,this.#C).catch(()=>{}),a}async#I(t){const s=Date.now();if(!this.#m&&t.cache!==!1){const e=await this.#i.getByTaskId(t.id);if(e?.fingerprint&&this.#e){const i=this.#e.validateCommand(e.fingerprint,`${t.target.project}:${t.target.target}`,t.overrides);if(i)this.#d&&this.#t.printCacheMiss?.(t,this.#e.formatMissReasons([i]));else{const a=await this.#e.validate(e.fingerprint);if(!a)return this.#b(t,e,s);this.#d&&this.#t.printCacheMiss?.(t,this.#e.formatMissReasons(a))}}else this.#d&&!e&&this.#t.printCacheMiss?.(t,`Cache miss reasons:
2
- - No previous fingerprint found (first run)`)}return this.#W(t,s)}async#b(t,s,e){const i=await this.#i.restoreOutputs(s.hash,t.outputs,t.cacheRestore)?"local-cache":"local-cache-kept-existing",a={code:s.code,endTime:Date.now(),startTime:e,status:i,task:t,terminalOutput:s.terminalOutput};return this.#s.set(t.id,a),a}async#D(t,s){try{const{code:e,retryAttempts:i,terminalOutput:a}=await this.#f(t,{captureOutput:this.#p,cwd:O(this.#a,t)}),h=e===0&&b(t.warningPattern,a),n={code:e,endTime:Date.now(),hadWarnings:h||void 0,retryAttempts:i&&i>0?i:void 0,startTime:s,status:e===0?"success":"failure",task:t,terminalOutput:a};this.#s.set(t.id,n);const c=h&&t.cacheOnWarning===!1;if(e===0&&t.cache!==!1&&t.hash&&!c){const p=await this.#P(t);p.length>0?(n.selfModified=!0,this.#t.printSelfModifyingSkip?.(t,p)):await this.#i.put(t.hash,a,t.outputs,e)}return n}catch(e){const i=w(t,e,s);return this.#s.set(t.id,i),i}}async#P(t){const s=t.hashDetails?.nodes;if(!s||typeof this.#r.rehashFile!="function")return[];const e=this.#r.rehashFile.bind(this.#r),i=Object.entries(s);return(await Promise.all(i.map(async([a,h])=>{const n=j(this.#a,a),c=await e(n);return c!==void 0&&c!==h?a:void 0}))).filter(a=>a!==void 0)}async#W(t,s){if(!this.#e)return this.#D(t,s);const e=`${t.target.project}:${t.target.target}`,i=O(this.#a,t);try{let a,h,n,c=0,p=!1,f,y;const T=this.#S?.(t);if(T&&this.#n?.isTrackingSupported&&this.#n){const o=await this.#n.execute(t,{captureOutput:this.#p,cwd:i},T);a=o.code,h=o.terminalOutput,c=o.accesses.length,p=!0,y=o.accesses.filter(u=>u.type==="write").map(u=>u.path),n=await this.#e.createFingerprint(o.accesses,e,t.overrides,process.env,this.#k,this.#g)}else{const o=await this.#f(t,{captureOutput:this.#p,cwd:i});a=o.code,h=o.terminalOutput,f=o.retryAttempts;const u=await this.#r.hashTask(t),d=Object.keys(u.nodes).map(S=>({path:M(this.#a,S),type:"read"}));n=await this.#e.createFingerprint(d,e,t.overrides,process.env,this.#k,this.#g)}const v=a===0&&b(t.warningPattern,h),m={code:a,endTime:Date.now(),hadWarnings:v||void 0,retryAttempts:f&&f>0?f:void 0,startTime:s,status:a===0?"success":"failure",task:t,terminalOutput:h};this.#s.set(t.id,m);const D=v&&t.cacheOnWarning===!1;if(a===0&&t.cache!==!1&&n&&!D){const o=this.#A(n),u=this.#L(n,p,c);if(o.length>0)m.selfModified=!0,this.#t.printSelfModifyingSkip?.(t,o);else if(u)m.emptyFingerprint=!0,this.#t.printEmptyFingerprintWarning?.(t,u);else{const d=z(n);Object.assign(t,{hash:d}),await this.#i.put(d,h,t.outputs,a,n,y),await this.#i.setTaskIndex(t.id,d)}}return m}catch(a){const h=w(t,a,s);return this.#s.set(t.id,h),h}}#A(t){return t.modifiedInputs??[]}#L(t,s,e){return!s||Object.keys(t.fileHashes).length>0||Object.keys(t.directoryListings).length>0||t.missingFiles.length>0?void 0:e===0?"Tracker observed no workspace file accesses — likely a static binary on a platform without strace. Caching skipped.":"Tracker returned accesses but none fell inside the workspace. Caching skipped to avoid false cache hits."}#G(t,s){const e=t.hash?`[hash: ${t.hash.slice(0,12)}...]`:"[no hash]",i={code:0,endTime:Date.now(),startTime:s,status:"skipped",task:t,terminalOutput:`DRY RUN ${e}`};return this.#s.set(t.id,i),i}#E(t){return t.when?!L(t.when,this.#O):!1}#F(t){const s=G(t.when,this.#O),e=Date.now();this.#t.printWhenSkip?.(t,s);const i={code:0,endTime:e,startTime:e,status:"skipped",task:t,terminalOutput:s?`Skipped: ${s}`:"Skipped by when clause"};return this.#s.set(t.id,i),i}}export{Z as TaskOrchestrator};
@@ -1,2 +0,0 @@
1
- var y=Object.defineProperty;var a=(o,t)=>y(o,"name",{value:t,configurable:!0});import{createRequire as g}from"node:module";import{join as n}from"@visulima/path";import{FileAccessTracker as b,generatePreloadScript as N}from"./FileAccessTracker-DSNf03JW.js";import{O as P}from"./utils-BH2W5Wml.js";const S=g(import.meta.url),i=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,f=a(o=>{if(typeof i<"u"&&i.versions&&i.versions.node){const[t,r]=i.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return i.getBuiltinModule(o)}return S(o)},"__cjs_getBuiltinModule"),{exec:T}=f("node:child_process"),{mkdir:O,writeFile:j,readFile:x,rm:h}=f("node:fs/promises");var E=Object.defineProperty,R=a((o,t)=>E(o,"name",{value:t,configurable:!0}),"u");class M{static{a(this,"TrackedTaskExecutor")}static{R(this,"TrackedTaskExecutor")}#t;#e;#r=new Set;constructor(t){this.#e=t,this.#t=new b(t)}get isTrackingSupported(){return!0}get isStraceSupported(){return this.#t.isSupported()}async execute(t,r,c){const s=r.cwd??(t.projectRoot?n(this.#e,t.projectRoot):this.#e);if(this.#t.isSupported()){const e=await this.#t.track(c,{cwd:s,env:r.env});return{accesses:e.accesses,code:e.code,terminalOutput:e.output}}return this.#s(c,s,r.env)}async#s(t,r,c){const s=n(this.#e,"node_modules",".cache","task-runner");await O(s,{recursive:!0});const e=P(),p=n(s,`preload-${e}.log`),u=n(s,`preload-${e}.mjs`),m=N(p);return await j(u,m),new Promise(_=>{const l=T(t,{cwd:r,env:{...process.env,...c,NODE_OPTIONS:`${process.env.NODE_OPTIONS??""} --import ${u}`.trim()},maxBuffer:52428800},async(A,w,k)=>{this.#r.delete(l);let d=[];try{const v=await x(p,"utf8");d=this.#o(v)}catch{}await h(p,{force:!0}).catch(()=>{}),await h(u,{force:!0}).catch(()=>{}),_({accesses:d,code:l.exitCode??1,terminalOutput:w+k})});this.#r.add(l)})}killAll(){this.#t.killAll();for(const t of this.#r)try{t.kill("SIGTERM")}catch{}this.#r.clear()}#o(t){const r=[],c=new Set;for(const s of t.split(`
2
- `))if(s.trim())try{const e=JSON.parse(s);e.path&&!c.has(e.path)&&(c.add(e.path),e.path.startsWith(this.#e)&&r.push({path:e.path,type:e.type}))}catch{}return r}}export{M as TrackedTaskExecutor};
@@ -1 +0,0 @@
1
- var m=Object.defineProperty;var h=(t,e)=>m(t,"name",{value:e,configurable:!0});var v=Object.defineProperty,g=h((t,e)=>v(t,"name",{value:e,configurable:!0}),"p");const l=g(t=>{const e=[t.project,t.target];return t.configuration&&e.push(t.configuration),e.join(":")},"getTaskId"),R=g(t=>{const e=t.split(":");if(e.length<2)throw new Error(`Invalid task ID: ${t}`);return{configuration:e[2],project:e[0],target:e[1]}},"parseTaskId"),f=g(t=>{if(t===void 0)return;const e=typeof t=="string"?[t]:t;return e.length===0?void 0:e},"normalizeWarningPattern"),j=g((t,e,c,o)=>{const a=c.projects[t],r=a?.targets?.[e],i=o?.[e];return(r?.outputs??i?.outputs??[]).map(p=>p.replace("{projectRoot}",a?.root??"").replace("{projectName}",t))},"getTaskOutputs"),d=g((t,e,c,o,a)=>{const r=o.projects[t];if(!r)return[];if(!(r.targets?.[e]!==void 0||a?.[e]!==void 0))return[];const i={project:t,target:e};return[{always:r.targets?.[e]?.always??a?.[e]?.always,cache:r.targets?.[e]?.cache??a?.[e]?.cache,cacheOnWarning:r.targets?.[e]?.cacheOnWarning??a?.[e]?.cacheOnWarning,cacheRestore:r.targets?.[e]?.cacheRestore??a?.[e]?.cacheRestore,concurrencyGroup:r.targets?.[e]?.concurrencyGroup??a?.[e]?.concurrencyGroup,id:l(i),maxConcurrent:r.targets?.[e]?.maxConcurrent??a?.[e]?.maxConcurrent,outputs:j(t,e,o,a),overrides:c,parallelism:r.targets?.[e]?.parallelism??a?.[e]?.parallelism,projectRoot:r.root,target:i,warningPattern:f(r.targets?.[e]?.warningPattern??a?.[e]?.warningPattern),when:r.targets?.[e]?.when??a?.[e]?.when}]},"getSameProjectTask"),w=g((t,e,c,o,a,r)=>{const i=[],p=a.dependencies[t]??[];for(const n of p){const s=o.projects[n.target];if(s&&(s.targets?.[e]!==void 0||r?.[e]!==void 0)){const u={project:n.target,target:e};i.push({always:s.targets?.[e]?.always??r?.[e]?.always,cache:s.targets?.[e]?.cache??r?.[e]?.cache,cacheOnWarning:s.targets?.[e]?.cacheOnWarning??r?.[e]?.cacheOnWarning,cacheRestore:s.targets?.[e]?.cacheRestore??r?.[e]?.cacheRestore,concurrencyGroup:s.targets?.[e]?.concurrencyGroup??r?.[e]?.concurrencyGroup,id:l(u),maxConcurrent:s.targets?.[e]?.maxConcurrent??r?.[e]?.maxConcurrent,outputs:j(n.target,e,o,r),overrides:c,parallelism:s.targets?.[e]?.parallelism??r?.[e]?.parallelism,projectRoot:s.root,target:u,warningPattern:f(s.targets?.[e]?.warningPattern??r?.[e]?.warningPattern),when:s.targets?.[e]?.when??r?.[e]?.when})}}return i},"getDependencyProjectTasks"),k=g((t,e,c,o,a)=>{if(e.startsWith("^")){const r=e.slice(1);return w(t.target.project,r,{},c,o,a)}return d(t.target.project,e,{},c,a)},"resolveStringDependency"),O=g((t,e,c,o,a)=>{const r=[];if(e.dependencies)r.push(...w(t.target.project,e.target,e.params==="forward"?t.overrides:{},c,o,a));else if(e.projects){const i=Array.isArray(e.projects)?e.projects:[e.projects];for(const p of i)r.push(...d(p,e.target,e.params==="forward"?t.overrides:{},c,a))}else r.push(...d(t.target.project,e.target,e.params==="forward"?t.overrides:{},c,a));return r},"resolveConfigDependency"),P=g((t,e,c,o,a)=>typeof e=="string"?k(t,e,c,o,a):O(t,e,c,o,a),"resolveDependency"),T=g((t,e)=>{const{projectGraph:c,targetDefaults:o,workspace:a}=e,r=a.projects[t.target.project];if(!r)return[];const i=r.targets?.[t.target.target],p=o?.[t.target.target],n=i?.dependsOn??p?.dependsOn??[],s=[];for(const u of n){const y=P(t,u,a,c,o);s.push(...y)}return s},"resolveTaskDependencies"),C=g((t,e)=>{const c={},o={},a=new Set,r=[...t];for(;r.length>0;){const n=r.shift();if(!n)break;if(a.has(n.id))continue;a.add(n.id),c[n.id]=n,o[n.id]=[];const s=T(n,e);for(const u of s)o[n.id]?.push(u.id),a.has(u.id)||r.push(u)}const i=new Set;for(const n of Object.values(o))for(const s of n)i.add(s);const p=Object.keys(c).filter(n=>!i.has(n));return{dependencies:o,roots:p,tasks:c}},"createTaskGraph");export{C as createTaskGraph,l as getTaskId,R as parseTaskId};
@@ -1,2 +0,0 @@
1
- var x=Object.defineProperty;var k=(e,a)=>x(e,"name",{value:a,configurable:!0});import{X as D}from"./utils-BH2W5Wml.js";import{createRemoteCacheBackend as F}from"./resolveCacheMode-DXe7i-tj.js";import{Cache as I}from"./Cache-C540ZPYk.js";import{inferFrameworkEnvPatterns as j}from"./detectFrameworks-WVZJOPgN.js";import{IncrementalFileHasher as H}from"./IncrementalFileHasher-CdLXVB5F.js";import{InProcessTaskHasher as O}from"./computeTaskHash-Xxd8v-X3.js";import{TaskOrchestrator as V}from"./TaskOrchestrator-CXeojk7n.js";import{TaskScheduler as z}from"./parsePartition-uzPNgtPp.js";var G=Object.defineProperty,m=k((e,a)=>G(e,"name",{value:a,configurable:!0}),"i");const P=m(e=>{const a=[],o={};for(const[r,n]of Object.entries(e.tasks))n.always?a.push(n):o[r]=n;if(a.length===0)return{alwaysTasks:[],graph:e};const i=new Set(a.map(r=>r.id)),c={};for(const[r,n]of Object.entries(e.dependencies))i.has(r)||(c[r]=n.filter(s=>!i.has(s)));return{alwaysTasks:a,graph:{dependencies:c,roots:e.roots.filter(r=>!i.has(r)),tasks:o}}},"partitionAlwaysTasks"),S=m(e=>{if(!e||e.length===0)return;const a=[...e].sort().map(o=>`${o}=${process.env[o]??""}`).join(`
2
- `);return D(Buffer.from(a)).slice(0,16)},"computeGlobalEnvNamespace"),A=m(e=>typeof e=="number"?Math.max(1,e):e===!1?1:3,"resolveParallel"),J=m(async(e,a,o)=>{const{lifeCycle:i,projectGraph:c,taskExecutor:r,taskGraph:n,workspaceRoot:s}=o,v=a.namespaceByGlobalEnv?S(a.globalEnv):void 0,d=new I({cacheDirectory:a.cacheDirectory,cacheNamespace:v,maxCacheAge:a.maxCacheAge,maxCacheSize:a.maxCacheSize,workspaceRoot:s});d.removeOldEntries().catch(()=>{});const p={};for(const[t,h]of Object.entries(c.nodes))p[t]=h.data;const l=a.incrementalFileHashing?new H({workspaceRoot:s}):void 0;l&&await l.load();const w=new O({autoEnvVars:a.autoEnvVars,envVars:a.envVars,frameworkInference:a.frameworkInference,globalEnv:a.globalEnv,globalInputs:a.globalInputs,incrementalHasher:l,namedInputs:a.namedInputs,onFingerprint:a.onFingerprint,projects:p,smartLockfileHashing:a.smartLockfileHashing,targetDefaults:a.targetDefaults,workspaceRoot:s}),{alwaysTasks:y,graph:g}=P(n),E=A(a.parallel),C=new z(g,c,E,a.concurrencyGroups),b=m(t=>{const h=c.nodes[t.target.project]?.data.targets?.[t.target.target],T=a.targetDefaults?.[t.target.target];return h?.command??T?.command},"resolveCommand"),u=a.remoteCache?F(a.remoteCache):void 0;let f=a.fingerprintEnvPatterns??[];if(a.frameworkInference&&a.autoFingerprint){const t=await j(s,p);f=[...new Set([...f,...t])]}const R=new V({alwaysTasks:y,autoFingerprint:a.autoFingerprint,cache:d,cacheDiagnostics:a.cacheDiagnostics,captureOutput:!0,dataDirectory:a.dataDirectory,dryRun:a.dryRun,fingerprintEnvPatterns:f,lifeCycle:i,onRemoteUploadError:a.remoteCache?.onUploadError,remoteCache:u,resolveCommand:a.autoFingerprint?b:void 0,scheduler:C,skipCache:a.skipNxCache,summarize:a.summarize,taskExecutor:r,taskGraph:g,taskHasher:w,untrackedEnvVars:a.untrackedEnvVars,workspaceRoot:s});try{const t=await R.run();return l&&await l.save().catch(()=>{}),t}finally{u&&await u.close().catch(()=>{})}},"defaultTaskRunner");export{J as defaultTaskRunner};
@@ -1,3 +0,0 @@
1
- var b=Object.defineProperty;var _=(s,e)=>b(s,"name",{value:e,configurable:!0});import{createRequire as I}from"node:module";import{spawn as L}from"@lydell/node-pty";const M=I(import.meta.url),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,P=_(s=>{if(typeof T<"u"&&T.versions&&T.versions.node){const[e,l]=T.versions.node.split(".").map(Number);if(e>22||e===22&&l>=3||e===20&&l>=16)return T.getBuiltinModule(s)}return M(s)},"__cjs_getBuiltinModule"),{spawn:S}=P("node:child_process");var F=Object.defineProperty,a=_((s,e)=>F(s,"name",{value:e,configurable:!0}),"d");const j=a((s,e)=>{if(s.length===0)return!0;const l=e.trim().toLowerCase();if(l==="first")return s[0].exitCode===0;if(l==="last")return s.at(-1).exitCode===0;const m=/^(!?)command-(.+)$/.exec(l);if(m){const[,v,C]=m,g=v==="!",f=s.filter(t=>t.name===C||String(t.index)===C);return g?s.filter(t=>!f.includes(t)).every(t=>t.exitCode===0):f.length>0&&f.every(t=>t.exitCode===0)}return s.every(v=>v.exitCode===0)},"evaluateSuccess"),E=a((s,e)=>{try{process.platform==="win32"?S("taskkill",["/F","/T","/PID",String(s)],{stdio:"ignore"}):process.kill(-s,e)}catch{}},"killTree"),G=a((s,e,l,m,v)=>{const C=process.hrtime(),g=e.shell!==!1,f=e.stdin??"null",t=f==="inherit"?"inherit":f==="pipe"?"pipe":"ignore";let o;if(g){let i,c,p=!1;l?(i=l,c=["-c",e.command]):process.platform==="win32"?(i="cmd.exe",c=["/s","/c",`"${e.command}"`],p=!0):(i="/bin/sh",c=["-c",e.command]),o=S(i,c,{cwd:e.cwd,detached:process.platform!=="win32",env:{...process.env,...e.env,FORCE_COLOR:process.env.FORCE_COLOR??"1"},stdio:[t,"pipe","pipe"],windowsVerbatimArguments:p})}else{const i=e.command.split(/\s+/),c=i[0],p=i.slice(1);o=S(c,p,{cwd:e.cwd,detached:process.platform!=="win32",env:{...process.env,...e.env,FORCE_COLOR:process.env.FORCE_COLOR??"1"},stdio:[t,"pipe","pipe"]})}m({index:s,kill:o.pid?i=>{E(o.pid,i??"SIGTERM")}:void 0,kind:"started",pid:o.pid,write:o.stdin?i=>o.stdin.write(i):void 0});let d="",n;const k=a(()=>{d&&(m({index:s,kind:"stdout",text:d}),d="")},"flushStdoutBuffer");o.stdout?.on("data",i=>{n&&(clearTimeout(n),n=void 0),d+=i.toString();const c=d.split(`
2
- `);d=c.pop()??"";for(const p of c)m({index:s,kind:"stdout",text:p});d&&(n=setTimeout(k,100))}),o.stdout?.on("end",()=>{n&&(clearTimeout(n),n=void 0),k()});let x="",h;const O=a(()=>{x&&(m({index:s,kind:"stderr",text:x}),x="")},"flushStderrBuffer");return o.stderr?.on("data",i=>{h&&(clearTimeout(h),h=void 0),x+=i.toString();const c=x.split(`
3
- `);x=c.pop()??"";for(const p of c)m({index:s,kind:"stderr",text:p});x&&(h=setTimeout(O,100))}),o.stderr?.on("end",()=>{h&&(clearTimeout(h),h=void 0),O()}),o.on("error",i=>{m({index:s,kind:"error",message:i.message})}),o.on("close",(i,c)=>{n&&(clearTimeout(n),n=void 0),h&&(clearTimeout(h),h=void 0),k(),O();const p=process.hrtime(C),y=p[0]*1e3+p[1]/1e6,r=i??(c?1:-1),u={command:e.command,durationMs:y,exitCode:r,index:s,killed:c!==null,name:e.name};m({commandName:e.name,durationMs:y,exitCode:r,index:s,killed:c!==null,kind:"close"}),v(u)}),{child:o,index:s,startTime:C}},"spawnCommand"),N=a((s,e,l,m,v)=>{const C=process.hrtime();let g,f;l?(g=l,f=["-c",e.command]):process.platform==="win32"?(g="cmd.exe",f=["/s","/c",e.command]):(g="/bin/sh",f=["-c",e.command]);const t=L(g,f,{cols:e.ptySize?.cols??80,cwd:e.cwd??process.cwd(),env:Object.fromEntries(Object.entries({...process.env,...e.env,FORCE_COLOR:process.env.FORCE_COLOR??"1",TERM:"xterm-256color"}).filter(o=>typeof o[1]=="string")),name:"xterm-256color",rows:e.ptySize?.rows??24});return m({index:s,kill:a(o=>{t.kill(o)},"kill"),kind:"started",pid:t.pid,resize:a((o,d)=>{t.resize(o,d)},"resize"),write:a(o=>{t.write(o)},"write")}),t.onData(o=>{m({index:s,kind:"stdout",text:o})}),t.onExit(({exitCode:o,signal:d})=>{const n=process.hrtime(C),k=n[0]*1e3+n[1]/1e6,x=o??(d?1:-1),h={command:e.command,durationMs:k,exitCode:x,index:s,killed:d!==void 0&&d!==0,name:e.name};m({commandName:e.name,durationMs:k,exitCode:x,index:s,killed:d!==void 0&&d!==0,kind:"close"}),v(h)}),{index:s,pty:t,startTime:C}},"spawnCommandPty"),A=a((s,e)=>new Promise(l=>{if(s.length===0){l({closeEvents:[],success:!0});return}const m=e.maxProcesses&&e.maxProcesses>0?e.maxProcesses:s.length,v=e.killSignal??"SIGTERM",C=e.killOthers??[],g=e.successCondition??"all",f=e.onEvent??(()=>{}),t=[],o=[],d=s.map((r,u)=>u);let n=!1,k=!1;const x=a(()=>{for(const r of t)r.pty?r.pty.kill(v):r.child?.pid&&E(r.child.pid,v)},"killAll"),h=a(r=>{for(const u of C)if(u==="failure"&&r.exitCode!==0||u==="success"&&r.exitCode===0)return!0;return!1},"shouldKillOthers"),O=a((r,u)=>{const R=t.findIndex(w=>w.index===r);if(R!==-1&&t.splice(R,1),n&&(u.killed=!0,k&&(u.exitCode=0)),o.push(u),!n&&h(u)&&(n=!0,x()),n||i(),t.length===0&&d.length===0){const w=j(o,g);l({closeEvents:o,success:w})}},"handleClose"),i=a(()=>{for(;t.length<m&&d.length>0;){const r=d.shift(),u=s[r],R=u.stdin==="pty"?N(r,u,e.shellPath,f,w=>{O(r,w)}):G(r,u,e.shellPath,f,w=>{O(r,w)});t.push(R)}},"maybeSpawnMore"),c=a(()=>{n||(n=!0,k=!0,x())},"handleSigint"),p=a(()=>{n||(n=!0,x())},"handleNonInteractiveAbort");process.on("SIGINT",c),process.on("SIGTERM",p),process.on("exit",p);const y=l;l=a((r=>{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",p),process.removeListener("exit",p),y(r)}),"resolve"),i()}),"runConcurrentFallback");export{A as runConcurrentFallback};
@@ -1 +0,0 @@
1
- var w=Object.defineProperty;var m=(t,e)=>w(t,"name",{value:e,configurable:!0});import{createRequire as k}from"node:module";import{runConcurrentFallback as S}from"./runConcurrentFallback-Dpqxuyv-.js";import{detectScriptShell as x}from"./detectScriptShell-CaTDk5cW.js";import{logTimings as C}from"./formatTimingTable-CP3rsDwf.js";import{withRestart as I}from"./withRestart-DKtEGsQA.js";import{runTeardown as P}from"./runTeardown-DBBpBAyb.js";import{loadNativeBindings as R}from"./isNativeAvailable-BOavFPX1.js";const T=k(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=m(t=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[e,s]=l.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return l.getBuiltinModule(t)}return T(t)},"__cjs_getBuiltinModule"),{spawn:_}=v("node:child_process");var b=Object.defineProperty,n=m((t,e)=>b(t,"name",{value:e,configurable:!0}),"t");const c=new Set;let f=!1;const M=n((t,e)=>{try{process.platform==="win32"?_("taskkill",["/F","/T","/PID",String(t)],{stdio:"ignore"}):process.kill(-t,e)}catch{}},"killTrackedTree"),u=n(t=>{for(const e of c)M(e,t)},"killAllTracked"),j=n(()=>{f||(f=!0,process.setMaxListeners(process.getMaxListeners()+3),process.on("SIGINT",()=>{u("SIGINT")}),process.on("SIGTERM",()=>{u("SIGTERM")}),process.on("exit",()=>{u("SIGTERM")}))},"installSignalHandlersOnce"),E=n(t=>t.map(e=>typeof e=="string"?{command:e}:e),"normalizeCommands"),g=n(async(t,e)=>{const s=e.shellPath??x(),o=R(),d=t.some(i=>i.stdin==="pipe"||i.stdin==="pty")||!!e.onEvent;if(o&&!d){const i={killOthers:e.killOthers,killSignal:e.killSignal,killTimeout:e.killTimeout,maxProcesses:e.maxProcesses,shellPath:s,successCondition:e.successCondition},h=t.map(r=>({command:r.command,cwd:r.cwd,env:r.env,name:r.name,shell:r.shell,stdin:r.stdin}));j();const a=new Map,y=n(r=>{if(r!=null){if(r.kind==="started"&&typeof r.pid=="number"){c.add(r.pid),a.set(r.index,r.pid);return}if(r.kind==="close"||r.kind==="error"){const p=a.get(r.index);p!==void 0&&(c.delete(p),a.delete(r.index))}}},"onLifecycle");try{return await o.runConcurrentBatch(h,i,y)}finally{for(const r of a.values())c.delete(r)}}return S(t,{...e,shellPath:s})},"coreRun"),A=n(async(t,e={})=>{const s=E(t);if(s.length===0)return{closeEvents:[],success:!0};let o;return e.restart&&e.restart.tries!==0?o=await I((d,i)=>g(d,i),s,e,{delay:e.restart.delay??0,onRetry:e.restart.onRetry,tries:e.restart.tries}):o=await g(s,e),e.timings&&C(o.closeEvents),e.teardown&&e.teardown.length>0&&await P({commands:e.teardown,cwd:e.teardownCwd}),o},"runConcurrently");export{A as runConcurrently};
@@ -1 +0,0 @@
1
- var u=Object.defineProperty;var i=(e,o)=>u(e,"name",{value:o,configurable:!0});import{createRequire as p}from"node:module";const m=p(import.meta.url),r=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=i(e=>{if(typeof r<"u"&&r.versions&&r.versions.node){const[o,s]=r.versions.node.split(".").map(Number);if(o>22||o===22&&s>=3||o===20&&s>=16)return r.getBuiltinModule(e)}return m(e)},"__cjs_getBuiltinModule"),{spawn:f}=l("node:child_process");var w=Object.defineProperty,a=i((e,o)=>w(e,"name",{value:o,configurable:!0}),"c");const h=a(async e=>{const{commands:o,cwd:s}=e,n=[];for(const c of o){const t=await _(c,s);n.push(t)}return n},"runTeardown"),_=a((e,o)=>new Promise(s=>{const n=process.platform==="win32"?"cmd.exe":"/bin/sh",c=process.platform==="win32"?["/s","/c",`"${e}"`]:["-c",e],t=f(n,c,{cwd:o,stdio:"inherit",windowsVerbatimArguments:process.platform==="win32"});t.on("close",d=>{s(d??1)}),t.on("error",()=>{s(1)})}),"runTeardownCommand");export{h as runTeardown};
@@ -1 +0,0 @@
1
- var t=Object.defineProperty;var r=(e,l)=>t(e,"name",{value:l,configurable:!0});var a=Object.defineProperty,o=r((e,l)=>a(e,"name",{value:l,configurable:!0}),"t");const s=o(e=>`'${e.replaceAll("'",String.raw`'\''`)}'`,"shellQuote");export{s};