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

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/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.15",
4
4
  "description": "A task runner with caching support for monorepo workspaces",
5
5
  "keywords": [
6
6
  "cache",
@@ -70,14 +70,14 @@
70
70
  }
71
71
  },
72
72
  "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"
73
+ "@visulima/task-runner-binding-darwin-arm64": "1.0.0-alpha.15",
74
+ "@visulima/task-runner-binding-darwin-x64": "1.0.0-alpha.15",
75
+ "@visulima/task-runner-binding-linux-arm64-gnu": "1.0.0-alpha.15",
76
+ "@visulima/task-runner-binding-linux-arm64-musl": "1.0.0-alpha.15",
77
+ "@visulima/task-runner-binding-linux-x64-gnu": "1.0.0-alpha.15",
78
+ "@visulima/task-runner-binding-linux-x64-musl": "1.0.0-alpha.15",
79
+ "@visulima/task-runner-binding-win32-arm64-msvc": "1.0.0-alpha.15",
80
+ "@visulima/task-runner-binding-win32-x64-msvc": "1.0.0-alpha.15"
81
81
  },
82
82
  "engines": {
83
83
  "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 +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};