@visulima/task-runner 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (102) hide show
  1. package/CHANGELOG.md +310 -0
  2. package/README.md +198 -52
  3. package/dist/index.d.ts +3795 -34
  4. package/dist/index.js +1 -20
  5. package/dist/packem_chunks/index.js +31 -0
  6. package/dist/packem_shared/Cache-C8FfeXpg.js +2 -0
  7. package/dist/packem_shared/CompositeLifeCycle-C6aee9GK.js +1 -0
  8. package/dist/packem_shared/FileAccessTracker-DBz_w4wl.js +50 -0
  9. package/dist/packem_shared/FingerprintManager-CYW2EwLc.js +2 -0
  10. package/dist/packem_shared/HttpRemoteCache-CpPl6lzE.js +1 -0
  11. package/dist/packem_shared/INPUT_URI_SCHEMES-Csrd0tlg.js +1 -0
  12. package/dist/packem_shared/IncrementalFileHasher-B-V3i2x-.js +1 -0
  13. package/dist/packem_shared/LogReporter-3R3oWj-Q.js +13 -0
  14. package/dist/packem_shared/ReapiRemoteCache-BXJip5wH.js +251 -0
  15. package/dist/packem_shared/TaskOrchestrator-CYj5MLwz.js +6 -0
  16. package/dist/packem_shared/TerminalBuffer-BtZy7TpT.js +3 -0
  17. package/dist/packem_shared/TrackedTaskExecutor-CtYLL3vS.js +1 -0
  18. package/dist/packem_shared/V2_ROOT-injxWBrl.js +1 -0
  19. package/dist/packem_shared/actionDigestForTaskHash-BOL4fZ9v.js +1 -0
  20. package/dist/packem_shared/archive-CDfGy5Lm.js +1 -0
  21. package/dist/packem_shared/buildForwardDependencyMap-DudUDFze.js +3 -0
  22. package/dist/packem_shared/collectFiles-W4bnBRpb.js +1 -0
  23. package/dist/packem_shared/collectNodeModulesBinDirs-CD-eDrtO.js +1 -0
  24. package/dist/packem_shared/computeTaskHash-CaPdG1BA.js +1 -0
  25. package/dist/packem_shared/containsBlob-DAU8R7GH.js +1 -0
  26. package/dist/packem_shared/createInputHandler-CkDCpPYy.js +1 -0
  27. package/dist/packem_shared/createTaskGraph-D8Jn_Dn9.js +1 -0
  28. package/dist/packem_shared/defaultTaskRunner-DMHpavzm.js +2 -0
  29. package/dist/packem_shared/detectFrameworks-WVZJOPgN.js +1 -0
  30. package/dist/packem_shared/detectScriptShell-CaTDk5cW.js +1 -0
  31. package/dist/packem_shared/digestBuffer-g11aCaDx.js +1 -0
  32. package/dist/packem_shared/enforceProjectConstraints-dNc1SwRi.js +1 -0
  33. package/dist/packem_shared/expandArguments-D7qvc6Rp.js +1 -0
  34. package/dist/packem_shared/expandShortcut-BErNHNXZ.js +1 -0
  35. package/dist/packem_shared/expandTokensInString-DVSFEdWu.js +1 -0
  36. package/dist/packem_shared/expandWildcard-DE0dOOZF.js +1 -0
  37. package/dist/packem_shared/extractPackageName-BeL6Gc3a.js +1 -0
  38. package/dist/packem_shared/findCycle-BY8-jmzB.js +1 -0
  39. package/dist/packem_shared/formatTimingTable-CP3rsDwf.js +7 -0
  40. package/dist/packem_shared/generateRunSummary-L9Z2NfWn.js +1 -0
  41. package/dist/packem_shared/getCurrentBranch-D-qoZByx.js +1 -0
  42. package/dist/packem_shared/getMainWorktreeRoot-DB9P2wDL.js +1 -0
  43. package/dist/packem_shared/isNativeAvailable-CkTjxb7P.js +1 -0
  44. package/dist/packem_shared/parseCommands-BHsXoUCd.js +1 -0
  45. package/dist/packem_shared/parsePartition-Bt1jBjZH.js +1 -0
  46. package/dist/packem_shared/projectGraphToDot-FN6oHDGH.js +250 -0
  47. package/dist/packem_shared/resolveCacheMode--4y60ODd.js +1 -0
  48. package/dist/packem_shared/resolveOutputs-CzGGEbcP.js +1 -0
  49. package/dist/packem_shared/runConcurrentFallback-BhJCT2LA.js +3 -0
  50. package/dist/packem_shared/runConcurrently-D1Ytsjaj.js +1 -0
  51. package/dist/packem_shared/runTeardown-DAn1xFWJ.js +1 -0
  52. package/dist/packem_shared/shell-quote-BhmqDUL1.js +1 -0
  53. package/dist/packem_shared/stripQuotes-jkZb0CL9.js +1 -0
  54. package/dist/packem_shared/toChromeTrace-DxN5NQIU.js +1 -0
  55. package/dist/packem_shared/tracked-executor-B90U4Um3.js +3 -0
  56. package/dist/packem_shared/utils-BH2W5Wml.js +1 -0
  57. package/dist/packem_shared/withRestart-DKtEGsQA.js +1 -0
  58. package/index.js +603 -0
  59. package/package.json +31 -19
  60. package/binding.js +0 -204
  61. package/dist/affected.d.ts +0 -48
  62. package/dist/cache.d.ts +0 -103
  63. package/dist/default-task-runner.d.ts +0 -44
  64. package/dist/file-access-tracker.d.ts +0 -53
  65. package/dist/fingerprint.d.ts +0 -45
  66. package/dist/framework-inference.d.ts +0 -35
  67. package/dist/graph-visualizer.d.ts +0 -74
  68. package/dist/incremental-hasher.d.ts +0 -58
  69. package/dist/life-cycle.d.ts +0 -36
  70. package/dist/lockfile-hasher.d.ts +0 -73
  71. package/dist/native-binding.d.ts +0 -64
  72. package/dist/packem_shared/Cache-IYpTYVUC.js +0 -298
  73. package/dist/packem_shared/CompositeLifeCycle-7AtYw1dv.js +0 -112
  74. package/dist/packem_shared/FileAccessTracker-CrtBAt5D.js +0 -239
  75. package/dist/packem_shared/FingerprintManager-D6Y0erg-.js +0 -227
  76. package/dist/packem_shared/IncrementalFileHasher-Ds3J6dgb.js +0 -151
  77. package/dist/packem_shared/RemoteCache-BDqrnDEi.js +0 -179
  78. package/dist/packem_shared/TaskOrchestrator-BvYs3ONw.js +0 -342
  79. package/dist/packem_shared/TaskScheduler-CJilHDta.js +0 -111
  80. package/dist/packem_shared/TrackedTaskExecutor-BGUKFE-7.js +0 -164
  81. package/dist/packem_shared/collectFiles-ClXHnHhg.js +0 -22
  82. package/dist/packem_shared/computeTaskHash-BoCnnvIJ.js +0 -356
  83. package/dist/packem_shared/createTaskGraph-CcsFaSrz.js +0 -164
  84. package/dist/packem_shared/defaultTaskRunner-CrW4v5Ye.js +0 -79
  85. package/dist/packem_shared/detectFrameworks-CeFzKE6J.js +0 -101
  86. package/dist/packem_shared/extractPackageName-CbVNW-dr.js +0 -189
  87. package/dist/packem_shared/filterAffectedTasks-I-18zPg6.js +0 -135
  88. package/dist/packem_shared/findCycle-DF4_BRdO.js +0 -212
  89. package/dist/packem_shared/generateRunSummary-qn-_jKwt.js +0 -134
  90. package/dist/packem_shared/isNativeAvailable-BWhnZ4ES.js +0 -19
  91. package/dist/packem_shared/projectGraphToDot-VdTjHcVp.js +0 -202
  92. package/dist/packem_shared/utils-zO0ZRgtf.js +0 -390
  93. package/dist/remote-cache.d.ts +0 -55
  94. package/dist/run-summary.d.ts +0 -89
  95. package/dist/task-graph-utils.d.ts +0 -39
  96. package/dist/task-graph.d.ts +0 -22
  97. package/dist/task-hasher.d.ts +0 -67
  98. package/dist/task-orchestrator.d.ts +0 -38
  99. package/dist/task-scheduler.d.ts +0 -18
  100. package/dist/tracked-executor.d.ts +0 -46
  101. package/dist/types.d.ts +0 -385
  102. package/dist/utils.d.ts +0 -39
@@ -0,0 +1,250 @@
1
+ var E=Object.defineProperty;var h=(e,t)=>E(e,"name",{value:t,configurable:!0});var y=Object.freeze,v=Object.defineProperty,p=h((e,t)=>v(e,"name",{value:t,configurable:!0}),"g"),A=h((e,t)=>y(v(e,"raw",{value:y(t||e.slice())})),"b");const b=p((e,t,s)=>{if(t&&!t.has(e))return"#eeeeee";switch(s?.get(e)){case"failure":return"#FFB6C1";case"local-cache":case"local-cache-kept-existing":case"remote-cache":return"#87CEEB";case"running":return"#FFD700";case"skipped":return"#D3D3D3";case"success":return"#90EE90";default:return"#FFFFFF"}},"getNodeColor"),w=p(e=>{switch(e){case"failure":return"[FAIL] ";case"local-cache":case"local-cache-kept-existing":case"remote-cache":return"[cache] ";case"running":return"[...] ";case"skipped":return"[skip] ";case"success":return"[ok] ";default:return""}},"getStatusIcon"),C=p((e,t)=>`${w(t?.get(e))}${e}`,"formatTaskLine"),k=p((e,t,s,r,o,a,i)=>{let d;t===""?d="":s?d="└── ":d="├── ";const c=o.has(e),n=c?" (*)":"",l=w(i?.get(e));if(a.push(`${t}${d}${l}${e}${n}`),c)return;o.add(e);const g=r.dependencies[e]??[];let u;t===""?u="":s?u=`${t} `:u=`${t}│ `;for(let f=0;f<g.length;f+=1){const j=f===g.length-1,x=g[f];x&&k(x,u,j,r,o,a,i)}},"printTree"),S=p((e,t={})=>{const{focusedTasks:s,groupByProject:r=!0,taskStatuses:o}=t,a=s?new Set(s):void 0,i=["digraph TaskGraph {"," rankdir=LR;",' node [shape=box, style=filled, fontname="monospace"];'];if(r){const d=new Map;for(const c of Object.values(e.tasks)){const{project:n}=c.target,l=d.get(n)??[];l.push(c),d.set(n,l)}for(const[c,n]of d){i.push(` subgraph "cluster_${c}" {`,` label="${c}";`," style=dashed;",' color="#888888";');for(const l of n){const g=b(l.id,a,o);i.push(` "${l.id}" [label="${l.target.target}", fillcolor="${g}"];`)}i.push(" }")}}else for(const d of Object.values(e.tasks)){const c=b(d.id,a,o);i.push(` "${d.id}" [fillcolor="${c}"];`)}for(const[d,c]of Object.entries(e.dependencies))for(const n of c){const l=a&&!a.has(d)?"#cccccc":"#333333";i.push(` "${d}" -> "${n}" [color="${l}"];`)}return i.push("}"),i.join(`
2
+ `)},"toGraphvizDot"),M=p((e,t)=>{const s=Object.values(e.tasks).map(o=>({configuration:o.target.configuration,id:o.id,project:o.target.project,status:t?.get(o.id),target:o.target.target})),r=[];for(const[o,a]of Object.entries(e.dependencies))for(const i of a)r.push({source:o,target:i});return{edges:r,nodes:s,roots:e.roots}},"toGraphJson");var m;const G=p((e,t={})=>{const s=M(e,t.taskStatuses);if(t.focusedTasks&&t.focusedTasks.length>0){const r=new Set(t.focusedTasks);s.nodes=s.nodes.filter(o=>r.has(o.id)),s.edges=s.edges.filter(o=>r.has(o.source)&&r.has(o.target)),s.roots=s.roots.filter(o=>r.has(o))}return String.raw(m||(m=A([`<!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>Task Graph</title>
7
+ <style>
8
+ * { margin: 0; padding: 0; box-sizing: border-box; }
9
+ body { font-family: system-ui, -apple-system, sans-serif; background: #1a1a2e; color: #eee; }
10
+ svg { width: 100vw; height: 100vh; }
11
+ .node rect { rx: 6; ry: 6; stroke: #555; stroke-width: 1.5; cursor: pointer; }
12
+ .node text { font-size: 11px; fill: #1a1a2e; font-weight: 600; pointer-events: none; }
13
+ .node:hover rect { stroke: #fff; stroke-width: 2; }
14
+ .edge { stroke: #444; stroke-width: 1.5; fill: none; marker-end: url(#arrow); }
15
+ .label { font-size: 10px; fill: #888; }
16
+ #info { position: fixed; top: 12px; right: 12px; background: #16213e; padding: 12px 16px; border-radius: 8px; font-size: 13px; }
17
+ #info b { color: #e94560; }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <div id="info">
22
+ <b>`,"</b> tasks &middot; <b>","</b> dependencies &middot; <b>",`</b> roots
23
+ </div>
24
+ <svg id="graph">
25
+ <defs>
26
+ <marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="6" markerHeight="6" orient="auto">
27
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#666"/>
28
+ </marker>
29
+ </defs>
30
+ </svg>
31
+ <script>
32
+ const data = `,`;
33
+ const svg = document.getElementById('graph');
34
+ const W = window.innerWidth, H = window.innerHeight;
35
+ const statusColors = {
36
+ success: '#2ecc71', 'local-cache': '#3498db', 'remote-cache': '#9b59b6',
37
+ failure: '#e74c3c', running: '#f39c12', skipped: '#95a5a6', pending: '#ecf0f1'
38
+ };
39
+ const projectColors = {};
40
+ const palette = ['#e94560','#0f3460','#533483','#16c79a','#f39c12','#2ecc71','#3498db','#e67e22','#9b59b6','#1abc9c'];
41
+ let ci = 0;
42
+ data.nodes.forEach(n => {
43
+ if (!projectColors[n.project]) {
44
+ projectColors[n.project] = palette[ci++ % palette.length];
45
+ }
46
+ });
47
+
48
+ // Simple force-directed layout
49
+ const nodes = data.nodes.map((n, i) => ({
50
+ ...n, x: W/2 + (Math.random()-0.5)*400, y: H/2 + (Math.random()-0.5)*300, vx: 0, vy: 0
51
+ }));
52
+ const nodeMap = new Map(nodes.map(n => [n.id, n]));
53
+ const edges = data.edges.map(e => ({ source: nodeMap.get(e.source), target: nodeMap.get(e.target) }));
54
+
55
+ function simulate() {
56
+ for (let iter = 0; iter < 300; iter++) {
57
+ // Repulsion
58
+ for (let i = 0; i < nodes.length; i++) {
59
+ for (let j = i+1; j < nodes.length; j++) {
60
+ let dx = nodes[j].x - nodes[i].x, dy = nodes[j].y - nodes[i].y;
61
+ let d = Math.sqrt(dx*dx + dy*dy) || 1;
62
+ let f = 8000 / (d * d);
63
+ nodes[i].vx -= dx/d * f; nodes[i].vy -= dy/d * f;
64
+ nodes[j].vx += dx/d * f; nodes[j].vy += dy/d * f;
65
+ }
66
+ }
67
+ // Attraction (edges)
68
+ edges.forEach(e => {
69
+ if (!e.source || !e.target) {
70
+ return;
71
+ }
72
+ let dx = e.target.x - e.source.x, dy = e.target.y - e.source.y;
73
+ let d = Math.sqrt(dx*dx + dy*dy) || 1;
74
+ let f = (d - 150) * 0.01;
75
+ e.source.vx += dx/d * f; e.source.vy += dy/d * f;
76
+ e.target.vx -= dx/d * f; e.target.vy -= dy/d * f;
77
+ });
78
+ // Gravity
79
+ nodes.forEach(n => {
80
+ n.vx += (W/2 - n.x) * 0.001;
81
+ n.vy += (H/2 - n.y) * 0.001;
82
+ n.x += n.vx * 0.3; n.y += n.vy * 0.3;
83
+ n.vx *= 0.8; n.vy *= 0.8;
84
+ n.x = Math.max(60, Math.min(W-60, n.x));
85
+ n.y = Math.max(30, Math.min(H-30, n.y));
86
+ });
87
+ }
88
+ }
89
+ simulate();
90
+
91
+ // Render
92
+ edges.forEach(e => {
93
+ if (!e.source || !e.target) {
94
+ return;
95
+ }
96
+ const line = document.createElementNS('http://www.w3.org/2000/svg','line');
97
+ line.setAttribute('x1', e.source.x); line.setAttribute('y1', e.source.y);
98
+ line.setAttribute('x2', e.target.x); line.setAttribute('y2', e.target.y);
99
+ line.setAttribute('class','edge');
100
+ svg.appendChild(line);
101
+ });
102
+ nodes.forEach(n => {
103
+ const g = document.createElementNS('http://www.w3.org/2000/svg','g');
104
+ g.setAttribute('class','node');
105
+ g.setAttribute('transform','translate('+(n.x-50)+','+(n.y-14)+')');
106
+ const rect = document.createElementNS('http://www.w3.org/2000/svg','rect');
107
+ rect.setAttribute('width','100'); rect.setAttribute('height','28');
108
+ rect.setAttribute('fill', n.status ? (statusColors[n.status]||'#ecf0f1') : projectColors[n.project]);
109
+ g.appendChild(rect);
110
+ const text = document.createElementNS('http://www.w3.org/2000/svg','text');
111
+ text.setAttribute('x','50'); text.setAttribute('y','18'); text.setAttribute('text-anchor','middle');
112
+ text.textContent = n.id.length > 14 ? n.target : n.id;
113
+ g.appendChild(text);
114
+ g.addEventListener('click', () => {
115
+ const deps = data.edges.filter(e => e.source === n.id).map(e => e.target);
116
+ const rdeps = data.edges.filter(e => e.target === n.id).map(e => e.source);
117
+ alert(n.id + '
118
+
119
+ Depends on: ' + (deps.join(', ')||'none') + '
120
+ Required by: ' + (rdeps.join(', ')||'none'));
121
+ });
122
+ svg.appendChild(g);
123
+ });
124
+ <\/script>
125
+ </body>
126
+ </html>`],[`<!DOCTYPE html>
127
+ <html lang="en">
128
+ <head>
129
+ <meta charset="UTF-8">
130
+ <title>Task Graph</title>
131
+ <style>
132
+ * { margin: 0; padding: 0; box-sizing: border-box; }
133
+ body { font-family: system-ui, -apple-system, sans-serif; background: #1a1a2e; color: #eee; }
134
+ svg { width: 100vw; height: 100vh; }
135
+ .node rect { rx: 6; ry: 6; stroke: #555; stroke-width: 1.5; cursor: pointer; }
136
+ .node text { font-size: 11px; fill: #1a1a2e; font-weight: 600; pointer-events: none; }
137
+ .node:hover rect { stroke: #fff; stroke-width: 2; }
138
+ .edge { stroke: #444; stroke-width: 1.5; fill: none; marker-end: url(#arrow); }
139
+ .label { font-size: 10px; fill: #888; }
140
+ #info { position: fixed; top: 12px; right: 12px; background: #16213e; padding: 12px 16px; border-radius: 8px; font-size: 13px; }
141
+ #info b { color: #e94560; }
142
+ </style>
143
+ </head>
144
+ <body>
145
+ <div id="info">
146
+ <b>`,"</b> tasks &middot; <b>","</b> dependencies &middot; <b>",`</b> roots
147
+ </div>
148
+ <svg id="graph">
149
+ <defs>
150
+ <marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="6" markerHeight="6" orient="auto">
151
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#666"/>
152
+ </marker>
153
+ </defs>
154
+ </svg>
155
+ <script>
156
+ const data = `,`;
157
+ const svg = document.getElementById('graph');
158
+ const W = window.innerWidth, H = window.innerHeight;
159
+ const statusColors = {
160
+ success: '#2ecc71', 'local-cache': '#3498db', 'remote-cache': '#9b59b6',
161
+ failure: '#e74c3c', running: '#f39c12', skipped: '#95a5a6', pending: '#ecf0f1'
162
+ };
163
+ const projectColors = {};
164
+ const palette = ['#e94560','#0f3460','#533483','#16c79a','#f39c12','#2ecc71','#3498db','#e67e22','#9b59b6','#1abc9c'];
165
+ let ci = 0;
166
+ data.nodes.forEach(n => {
167
+ if (!projectColors[n.project]) {
168
+ projectColors[n.project] = palette[ci++ % palette.length];
169
+ }
170
+ });
171
+
172
+ // Simple force-directed layout
173
+ const nodes = data.nodes.map((n, i) => ({
174
+ ...n, x: W/2 + (Math.random()-0.5)*400, y: H/2 + (Math.random()-0.5)*300, vx: 0, vy: 0
175
+ }));
176
+ const nodeMap = new Map(nodes.map(n => [n.id, n]));
177
+ const edges = data.edges.map(e => ({ source: nodeMap.get(e.source), target: nodeMap.get(e.target) }));
178
+
179
+ function simulate() {
180
+ for (let iter = 0; iter < 300; iter++) {
181
+ // Repulsion
182
+ for (let i = 0; i < nodes.length; i++) {
183
+ for (let j = i+1; j < nodes.length; j++) {
184
+ let dx = nodes[j].x - nodes[i].x, dy = nodes[j].y - nodes[i].y;
185
+ let d = Math.sqrt(dx*dx + dy*dy) || 1;
186
+ let f = 8000 / (d * d);
187
+ nodes[i].vx -= dx/d * f; nodes[i].vy -= dy/d * f;
188
+ nodes[j].vx += dx/d * f; nodes[j].vy += dy/d * f;
189
+ }
190
+ }
191
+ // Attraction (edges)
192
+ edges.forEach(e => {
193
+ if (!e.source || !e.target) {
194
+ return;
195
+ }
196
+ let dx = e.target.x - e.source.x, dy = e.target.y - e.source.y;
197
+ let d = Math.sqrt(dx*dx + dy*dy) || 1;
198
+ let f = (d - 150) * 0.01;
199
+ e.source.vx += dx/d * f; e.source.vy += dy/d * f;
200
+ e.target.vx -= dx/d * f; e.target.vy -= dy/d * f;
201
+ });
202
+ // Gravity
203
+ nodes.forEach(n => {
204
+ n.vx += (W/2 - n.x) * 0.001;
205
+ n.vy += (H/2 - n.y) * 0.001;
206
+ n.x += n.vx * 0.3; n.y += n.vy * 0.3;
207
+ n.vx *= 0.8; n.vy *= 0.8;
208
+ n.x = Math.max(60, Math.min(W-60, n.x));
209
+ n.y = Math.max(30, Math.min(H-30, n.y));
210
+ });
211
+ }
212
+ }
213
+ simulate();
214
+
215
+ // Render
216
+ edges.forEach(e => {
217
+ if (!e.source || !e.target) {
218
+ return;
219
+ }
220
+ const line = document.createElementNS('http://www.w3.org/2000/svg','line');
221
+ line.setAttribute('x1', e.source.x); line.setAttribute('y1', e.source.y);
222
+ line.setAttribute('x2', e.target.x); line.setAttribute('y2', e.target.y);
223
+ line.setAttribute('class','edge');
224
+ svg.appendChild(line);
225
+ });
226
+ nodes.forEach(n => {
227
+ const g = document.createElementNS('http://www.w3.org/2000/svg','g');
228
+ g.setAttribute('class','node');
229
+ g.setAttribute('transform','translate('+(n.x-50)+','+(n.y-14)+')');
230
+ const rect = document.createElementNS('http://www.w3.org/2000/svg','rect');
231
+ rect.setAttribute('width','100'); rect.setAttribute('height','28');
232
+ rect.setAttribute('fill', n.status ? (statusColors[n.status]||'#ecf0f1') : projectColors[n.project]);
233
+ g.appendChild(rect);
234
+ const text = document.createElementNS('http://www.w3.org/2000/svg','text');
235
+ text.setAttribute('x','50'); text.setAttribute('y','18'); text.setAttribute('text-anchor','middle');
236
+ text.textContent = n.id.length > 14 ? n.target : n.id;
237
+ g.appendChild(text);
238
+ g.addEventListener('click', () => {
239
+ const deps = data.edges.filter(e => e.source === n.id).map(e => e.target);
240
+ const rdeps = data.edges.filter(e => e.target === n.id).map(e => e.source);
241
+ alert(n.id + '\\n\\nDepends on: ' + (deps.join(', ')||'none') + '\\nRequired by: ' + (rdeps.join(', ')||'none'));
242
+ });
243
+ svg.appendChild(g);
244
+ });
245
+ <\/script>
246
+ </body>
247
+ </html>`])),s.nodes.length,s.edges.length,s.roots.length,JSON.stringify(s).replaceAll("</",String.raw`<\/`))},"toGraphHtml"),F=p((e,t={})=>{const{taskStatuses:s}=t,r=[],o=Object.keys(e.tasks).length,a=Object.values(e.dependencies).reduce((n,l)=>n+l.length,0);r.push(`Task Graph (${o} tasks, ${a} dependencies)`,"");const i=new Set;for(const n of Object.values(e.dependencies))for(const l of n)i.add(l);const d=Object.keys(e.tasks).filter(n=>!i.has(n));if(d.length===0){for(const n of Object.keys(e.tasks))r.push(C(n,s));return r.join(`
248
+ `)}const c=new Set;for(const n of d)k(n,"",!0,e,c,r,s);return c.size<o&&r.push("","(*) = already shown above"),r.join(`
249
+ `)},"toGraphAscii"),O=p(e=>{const t=["digraph ProjectGraph {"," rankdir=LR;",' node [shape=box, style=filled, fillcolor="#87CEEB", fontname="monospace"];'];for(const s of Object.values(e.nodes)){const r=s.type==="application"?"#FFD700":s.type==="service"?"#90EE90":s.type==="tool"?"#FFB347":"#87CEEB";t.push(` "${s.name}" [fillcolor="${r}"];`)}for(const[s,r]of Object.entries(e.dependencies))for(const o of r){const a=[];switch(o.type){case"devDependency":{a.push("style=dotted",'color="#888888"');break}case"implicit":{a.push("style=dashed");break}case"peerDependency":{a.push("style=dashed",'color="#CC8800"');break}default:a.push("style=solid")}t.push(` "${s}" -> "${o.target}" [${a.join(", ")}];`)}return t.push("}"),t.join(`
250
+ `)},"projectGraphToDot");export{O as projectGraphToDot,F as toGraphAscii,G as toGraphHtml,M as toGraphJson,S as toGraphvizDot};
@@ -0,0 +1 @@
1
+ var c=Object.defineProperty;var a=(e,t)=>c(e,"name",{value:t,configurable:!0});import{HttpRemoteCache as n}from"./HttpRemoteCache-CpPl6lzE.js";import{ReapiRemoteCache as m}from"./ReapiRemoteCache-BXJip5wH.js";var d=Object.defineProperty,o=a((e,t)=>d(e,"name",{value:t,configurable:!0}),"a");const p=o(e=>e.mode??"readwrite","resolveCacheMode"),i=o((e,t=process.env)=>{if((e?.backend??"http")!=="http")return e?.url?e:void 0;const r=e?.url??t.TURBO_API;if(r)return{...e,teamId:e?.teamId??t.TURBO_TEAM,token:e?.token??t.TURBO_TOKEN,url:r}},"resolveTurboEnvCompat"),v=o(e=>{const t=p(e),r={...e,mode:t};switch(e.backend??"http"){case"http":return new n(r);case"reapi":return new m(r);default:return new n(r)}},"createRemoteCacheBackend");export{v as createRemoteCacheBackend,p as resolveCacheMode,i as resolveTurboEnvCompat};
@@ -0,0 +1 @@
1
+ var y=Object.defineProperty;var f=(t,e)=>y(t,"name",{value:e,configurable:!0});import{createRequire as b}from"node:module";import{isAbsolute as O,resolve as g,relative as T,join as q}from"@visulima/path";const j=b(import.meta.url),a=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,m=f(t=>{if(typeof a<"u"&&a.versions&&a.versions.node){const[e,s]=a.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return a.getBuiltinModule(t)}return j(t)},"__cjs_getBuiltinModule"),{stat:w,glob:P}=m("node:fs/promises"),{matchesGlob:F}=m("node:path");var R=Object.defineProperty,u=f((t,e)=>R(t,"name",{value:e,configurable:!0}),"c");const W=/[*?[\]{}]/,p=u((t,e)=>{const s=T(t,e);if(!(s.length===0||s.startsWith("..")))return s},"toWorkspaceRelative"),A=u(async(t,e,s)=>{if(!e||e.length===0)return[];const n=[],r=[];let c=!1;for(const o of e){if(typeof o!="string"){o.auto&&(c=!0);continue}if(o.length!==0){if(o.startsWith("!")){const i=o.slice(1);i.length>0&&r.push(i);continue}n.push(o)}}const l=new Set;if(c&&s)for(const o of s){const i=O(o)?o:g(t,o),d=p(t,i);d&&l.add(d)}const _=r.length>0,v=await Promise.all(n.map(o=>x(t,o,_)));for(const o of v)for(const i of o)l.add(i);return r.length===0?[...l].sort():[...l].filter(o=>!r.some(i=>F(o,i))).sort()},"resolveOutputs"),h=u(async(t,e)=>{const s=[];for await(const n of P(e,{cwd:t,withFileTypes:!0})){if(!n.isFile())continue;const r=p(t,q(n.parentPath,n.name));r&&s.push(r)}return s},"collectFiles"),x=u(async(t,e,s)=>{if(!W.test(e)){const n=g(t,e),r=p(t,n);if(!r)return[];let c;try{c=await w(n)}catch{return[]}return s&&c.isDirectory()?h(t,`${e}/**`):[r]}return h(t,e)},"expandPattern");export{A as resolveOutputs};
@@ -0,0 +1,3 @@
1
+ var L=Object.defineProperty;var R=(s,e)=>L(s,"name",{value:e,configurable:!0});import{createRequire as b}from"node:module";import{spawn as F}from"@lydell/node-pty";const O=b(import.meta.url),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,_=R(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 O(s)},"__cjs_getBuiltinModule"),{spawn:y}=_("node:child_process");var j=Object.defineProperty,a=R((s,e)=>j(s,"name",{value:e,configurable:!0}),"l");const N={SIGABRT:6,SIGALRM:14,SIGBUS:7,SIGCHLD:17,SIGFPE:8,SIGHUP:1,SIGILL:4,SIGINT:2,SIGKILL:9,SIGPIPE:13,SIGQUIT:3,SIGSEGV:11,SIGSTOP:19,SIGTERM:15,SIGTRAP:5,SIGUSR1:10,SIGUSR2:12},A=a(s=>N[s],"signalNumberFor"),M=a((s,e={})=>{const l=s?.FORCE_COLOR;return{...process.env,...s,...e,FORCE_COLOR:l??process.env.FORCE_COLOR??"1"}},"mergeEnvWithForceColor"),$=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 p=/^(!?)command-(.+)$/.exec(l);if(p){const[,S,v]=p,I=S==="!",f=s.filter(o=>o.name===v||String(o.index)===v);return I?s.filter(o=>!f.includes(o)).every(o=>o.exitCode===0):f.length>0&&f.every(o=>o.exitCode===0)}return s.every(S=>S.exitCode===0)},"evaluateSuccess"),P=a((s,e)=>{try{process.platform==="win32"?y("taskkill",["/F","/T","/PID",String(s)],{stdio:"ignore"}):process.kill(-s,e)}catch{}},"killTree"),E=a((s,e,l,p,S)=>{const v=process.hrtime(),I=e.shell!==!1,f=e.stdin??"null",o=f==="inherit"?"inherit":f==="pipe"?"pipe":"ignore";let t;if(I){let i,c,m=!1;l?(i=l,c=["-c",e.command]):process.platform==="win32"?(i="cmd.exe",c=["/s","/c",`"${e.command}"`],m=!0):(i="/bin/sh",c=["-c",e.command]),t=y(i,c,{cwd:e.cwd,detached:process.platform!=="win32",env:M(e.env),stdio:[o,"pipe","pipe"],windowsVerbatimArguments:m})}else{const i=e.command.split(/\s+/),c=i[0],m=i.slice(1);t=y(c,m,{cwd:e.cwd,detached:process.platform!=="win32",env:M(e.env),stdio:[o,"pipe","pipe"]})}p({index:s,kill:t.pid?i=>{P(t.pid,i??"SIGTERM")}:void 0,kind:"started",pid:t.pid,write:t.stdin?i=>t.stdin.write(i):void 0});let d="",n;const g=a(()=>{d&&(p({index:s,kind:"stdout",text:d.replace(/\r$/,"")}),d="")},"flushStdoutBuffer");t.stdout?.on("data",i=>{n&&(clearTimeout(n),n=void 0),d+=i.toString();const c=d.split(`
2
+ `);d=c.pop()??"";for(const m of c)p({index:s,kind:"stdout",text:m.replace(/\r$/,"")});d&&(n=setTimeout(g,100))}),t.stdout?.on("end",()=>{n&&(clearTimeout(n),n=void 0),g()});let x="",h;const w=a(()=>{x&&(p({index:s,kind:"stderr",text:x.replace(/\r$/,"")}),x="")},"flushStderrBuffer");return t.stderr?.on("data",i=>{h&&(clearTimeout(h),h=void 0),x+=i.toString();const c=x.split(`
3
+ `);x=c.pop()??"";for(const m of c)p({index:s,kind:"stderr",text:m.replace(/\r$/,"")});x&&(h=setTimeout(w,100))}),t.stderr?.on("end",()=>{h&&(clearTimeout(h),h=void 0),w()}),t.on("error",i=>{p({index:s,kind:"error",message:i.message})}),t.on("close",(i,c)=>{n&&(clearTimeout(n),n=void 0),h&&(clearTimeout(h),h=void 0),g(),w();const m=process.hrtime(v),G=m[0]*1e3+m[1]/1e6,r=i??(c?128+(A(c)??15):-1),u={command:e.command,durationMs:G,exitCode:r,index:s,killed:c!==null,name:e.name};p({commandName:e.name,durationMs:G,exitCode:r,index:s,killed:c!==null,kind:"close"}),S(u)}),{child:t,index:s,startTime:v}},"spawnCommand"),B=a((s,e,l,p,S)=>{const v=process.hrtime();let I,f;l?(I=l,f=["-c",e.command]):process.platform==="win32"?(I="cmd.exe",f=["/s","/c",e.command]):(I="/bin/sh",f=["-c",e.command]);const o=F(I,f,{cols:e.ptySize?.cols??80,cwd:e.cwd??process.cwd(),env:Object.fromEntries(Object.entries(M(e.env,{TERM:"xterm-256color"})).filter(t=>typeof t[1]=="string")),name:"xterm-256color",rows:e.ptySize?.rows??24});return p({index:s,kill:a(t=>{o.kill(t)},"kill"),kind:"started",pid:o.pid,resize:a((t,d)=>{o.resize(t,d)},"resize"),write:a(t=>{o.write(t)},"write")}),o.onData(t=>{p({index:s,kind:"stdout",text:t})}),o.onExit(({exitCode:t,signal:d})=>{const n=process.hrtime(v),g=n[0]*1e3+n[1]/1e6,x=t??(d?1:-1),h={command:e.command,durationMs:g,exitCode:x,index:s,killed:d!==void 0&&d!==0,name:e.name};p({commandName:e.name,durationMs:g,exitCode:x,index:s,killed:d!==void 0&&d!==0,kind:"close"}),S(h)}),{index:s,pty:o,startTime:v}},"spawnCommandPty"),D=a((s,e)=>new Promise(l=>{if(s.length===0){l({closeEvents:[],success:!0});return}const p=e.maxProcesses&&e.maxProcesses>0?e.maxProcesses:s.length,S=e.killSignal??"SIGTERM",v=e.killOthers??[],I=e.successCondition??"all",f=e.onEvent??(()=>{}),o=[],t=[],d=s.map((r,u)=>u);let n=!1,g=!1;const x=a(()=>{for(const r of o)r.pty?r.pty.kill(S):r.child?.pid&&P(r.child.pid,S)},"killAll"),h=a(r=>{for(const u of v)if(u==="failure"&&r.exitCode!==0||u==="success"&&r.exitCode===0)return!0;return!1},"shouldKillOthers"),w=a((r,u)=>{const k=o.findIndex(C=>C.index===r);if(k!==-1&&o.splice(k,1),n&&(u.killed=!0,g&&(u.exitCode=0)),t.push(u),!n&&h(u)&&(n=!0,x()),n||i(),o.length===0&&d.length===0){const C=$(t,I);l({closeEvents:t,success:C})}},"handleClose"),i=a(()=>{for(;o.length<p&&d.length>0;){const r=d.shift(),u=s[r];let k;if(u.stdin==="pty")try{k=B(r,u,e.shellPath,f,C=>{w(r,C)})}catch{k=E(r,u,e.shellPath,f,C=>{w(r,C)})}else k=E(r,u,e.shellPath,f,C=>{w(r,C)});o.push(k)}},"maybeSpawnMore"),c=a(()=>{n||(n=!0,g=!0,x())},"handleSigint"),m=a(()=>{n||(n=!0,x())},"handleNonInteractiveAbort");process.setMaxListeners(process.getMaxListeners()+3),process.on("SIGINT",c),process.on("SIGTERM",m),process.on("exit",m);const G=l;l=a((r=>{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",m),process.removeListener("exit",m),process.setMaxListeners(Math.max(0,process.getMaxListeners()-3)),G(r)}),"resolve"),i()}),"runConcurrentFallback");export{D as runConcurrentFallback};
@@ -0,0 +1 @@
1
+ var v=Object.defineProperty;var p=(t,e)=>v(t,"name",{value:e,configurable:!0});import{createRequire as y}from"node:module";import{runConcurrentFallback as _}from"./runConcurrentFallback-BhJCT2LA.js";import{detectScriptShell as S}from"./detectScriptShell-CaTDk5cW.js";import{logTimings as b}from"./formatTimingTable-CP3rsDwf.js";import{withRestart as x}from"./withRestart-DKtEGsQA.js";import{runTeardown as C}from"./runTeardown-DAn1xFWJ.js";import{loadNativeBindings as I}from"./isNativeAvailable-CkTjxb7P.js";import{buildEnhancedPath as R}from"./collectNodeModulesBinDirs-CD-eDrtO.js";const k=y(import.meta.url),a=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,P=p(t=>{if(typeof a<"u"&&a.versions&&a.versions.node){const[e,o]=a.versions.node.split(".").map(Number);if(e>22||e===22&&o>=3||e===20&&o>=16)return a.getBuiltinModule(t)}return k(t)},"__cjs_getBuiltinModule"),{spawn:E}=P("node:child_process");var M=Object.defineProperty,i=p((t,e)=>M(t,"name",{value:e,configurable:!0}),"o");const d=new Set;let h=!1;const j=i((t,e)=>{try{process.platform==="win32"?E("taskkill",["/F","/T","/PID",String(t)],{stdio:"ignore"}):process.kill(-t,e)}catch{}},"killTrackedTree"),u=i(t=>{for(const e of d)j(e,t)},"killAllTracked"),A=i(()=>{h||(h=!0,process.setMaxListeners(process.getMaxListeners()+3),process.on("SIGINT",()=>{u("SIGINT")}),process.on("SIGTERM",()=>{u("SIGTERM")}),process.on("exit",()=>{u("SIGTERM")}))},"installSignalHandlersOnce"),H=i(t=>t.map(e=>typeof e=="string"?{command:e}:e),"normalizeCommands"),G=i(t=>t.map(e=>{const o=e.cwd??process.cwd(),n=R(o,e.env),s={...e.env};return delete s.Path,delete s.path,s.PATH=n,process.platform==="win32"&&(s.Path=n,!("PATHEXT"in s)&&process.env.PATHEXT&&(s.PATHEXT=process.env.PATHEXT)),{...e,env:s}}),"withEnhancedPathConfigs"),T=i(async(t,e)=>{const o=e.shellPath??S(),n=G(t),s=I(),m=n.some(l=>l.stdin==="pipe"||l.stdin==="pty")||!!e.onEvent;if(s&&!m){const l={killOthers:e.killOthers,killSignal:e.killSignal,killTimeout:e.killTimeout,maxProcesses:e.maxProcesses,shellPath:o,successCondition:e.successCondition},g=n.map(r=>({command:r.command,cwd:r.cwd,env:r.env,name:r.name,shell:r.shell,stdin:r.stdin}));A();const c=new Map,w=i(r=>{if(r!=null){if(r.kind==="started"&&typeof r.pid=="number"){d.add(r.pid),c.set(r.index,r.pid);return}if(r.kind==="close"||r.kind==="error"){const f=c.get(r.index);f!==void 0&&(d.delete(f),c.delete(r.index))}}},"onLifecycle");try{return await s.runConcurrentBatch(g,l,w)}finally{for(const r of c.values())d.delete(r)}}return _(n,{...e,shellPath:o})},"coreRun"),J=i(async(t,e={})=>{const o=H(t);if(o.length===0)return{closeEvents:[],success:!0};let n;return e.restart&&e.restart.tries!==0?n=await x((s,m)=>T(s,m),o,e,{delay:e.restart.delay??0,onRetry:e.restart.onRetry,tries:e.restart.tries}):n=await T(o,e),e.timings&&b(n.closeEvents),e.teardown&&e.teardown.length>0&&await C({commands:e.teardown,cwd:e.teardownCwd}),n},"runConcurrently");export{J as runConcurrently};
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var i=(o,e)=>p(o,"name",{value:e,configurable:!0});import{createRequire as m}from"node:module";import{withEnhancedPath as w}from"./collectNodeModulesBinDirs-CD-eDrtO.js";const u=m(import.meta.url),r=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,l=i(o=>{if(typeof r<"u"&&r.versions&&r.versions.node){const[e,s]=r.versions.node.split(".").map(Number);if(e>22||e===22&&s>=3||e===20&&s>=16)return r.getBuiltinModule(o)}return u(o)},"__cjs_getBuiltinModule"),{spawn:f}=l("node:child_process");var _=Object.defineProperty,a=i((o,e)=>_(o,"name",{value:e,configurable:!0}),"c");const j=a(async o=>{const{commands:e,cwd:s}=o,n=[];for(const c of e){const t=await h(c,s);n.push(t)}return n},"runTeardown"),h=a((o,e)=>new Promise(s=>{const n=process.platform==="win32"?"cmd.exe":"/bin/sh",c=process.platform==="win32"?["/s","/c",`"${o}"`]:["-c",o],t=f(n,c,{cwd:e,env:w(process.env,e??process.cwd()),stdio:"inherit",windowsVerbatimArguments:process.platform==="win32"});t.on("close",d=>{s(d??1)}),t.on("error",()=>{s(1)})}),"runTeardownCommand");export{j as runTeardown};
@@ -0,0 +1 @@
1
+ var a=Object.defineProperty;var t=(e,l)=>a(e,"name",{value:l,configurable:!0});var r=Object.defineProperty,c=t((e,l)=>r(e,"name",{value:l,configurable:!0}),"t");const n=/^[\w./:@+,=-]+$/,s=c(e=>e!==""&&n.test(e)?e:process.platform==="win32"?`"${e.replaceAll("\\","\\\\").replaceAll('"',String.raw`\"`).replaceAll(/[\^&|<>]/g,"^$&")}"`:`'${e.replaceAll("'",String.raw`'\''`)}'`,"shellQuote");export{s};
@@ -0,0 +1 @@
1
+ var o=Object.defineProperty;var r=(e,t)=>o(e,"name",{value:t,configurable:!0});var n=Object.defineProperty,s=r((e,t)=>n(e,"name",{value:t,configurable:!0}),"o");const c=s(e=>{const{command:t}=e;return/^".+?"$/.test(t)||/^'.+?'$/.test(t)?{...e,command:t.slice(1,-1)}:e},"stripQuotes");export{c as stripQuotes};
@@ -0,0 +1 @@
1
+ var k=Object.defineProperty;var u=(t,s)=>k(t,"name",{value:s,configurable:!0});import{createRequire as b}from"node:module";const j=b(import.meta.url),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=u(t=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[s,i]=o.versions.node.split(".").map(Number);if(s>22||s===22&&i>=3||s===20&&i>=16)return o.getBuiltinModule(t)}return j(t)},"__cjs_getBuiltinModule"),{writeFile:N}=v("node:fs/promises");var D=Object.defineProperty,I=u((t,s)=>D(t,"name",{value:s,configurable:!0}),"p");const y="task",h="dep",d=1,C=I(t=>{const s=[],i=Date.parse(t.startTime),g=[...t.tasks].sort((e,n)=>{const r=e.startTime?Date.parse(e.startTime):Number.POSITIVE_INFINITY,a=n.startTime?Date.parse(n.startTime):Number.POSITIVE_INFINITY;return r-a}),c=[],m=new Map;for(const e of g){if(!e.startTime||!e.endTime)continue;const n=Date.parse(e.startTime),r=Date.parse(e.endTime);let a=c.findIndex(p=>p<=n);a===-1?(a=c.length,c.push(r)):c[a]=r,m.set(e.taskId,a),s.push({args:{cacheStatus:e.cacheStatus,exitCode:e.exitCode,hash:e.hash,project:e.target.project,target:e.target.target},cat:y,dur:Math.max(0,(r-n)*1e3),name:e.taskId,ph:"X",pid:d,tid:a,ts:(n-i)*1e3})}let f=1;for(const e of t.tasks){if(!e.startTime||!e.endTime)continue;const n=e.dependencies??[];for(const r of n){const a=t.tasks.find(_=>_.taskId===r);if(!a?.endTime||!e.startTime)continue;const p=(Date.parse(a.endTime)-i)*1e3,l=(Date.parse(e.startTime)-i)*1e3,T=f;f+=1,s.push({cat:h,id:T,name:`${r} → ${e.taskId}`,ph:"s",pid:d,tid:m.get(r)??0,ts:p},{cat:h,id:T,name:`${r} → ${e.taskId}`,ph:"f",pid:d,tid:m.get(e.taskId)??0,ts:l})}}return s.unshift({args:{name:`vis run (${t.id})`},cat:"__metadata",name:"process_name",ph:"M",pid:d,tid:0,ts:0}),s},"toChromeTrace"),M=I(async(t,s)=>{const i=C(t);await N(s,JSON.stringify({traceEvents:i}))},"writeChromeTrace");export{C as toChromeTrace,M as writeChromeTrace};
@@ -0,0 +1,3 @@
1
+ var R=Object.defineProperty;var f=(e,t)=>R(e,"name",{value:t,configurable:!0});import{createRequire as j}from"node:module";import{resolve as T,join as h}from"@visulima/path";import{FileAccessTracker as C,parseDirectExec as D,generatePreloadScript as U}from"./FileAccessTracker-DBz_w4wl.js";import{withEnhancedPath as q}from"./collectNodeModulesBinDirs-CD-eDrtO.js";import{O as I}from"./utils-BH2W5Wml.js";const x=j(import.meta.url),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,b=f(e=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[t,r]=g.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return g.getBuiltinModule(e)}return x(e)},"__cjs_getBuiltinModule"),{exec:A}=b("node:child_process"),{mkdir:S,rm:v,readFile:_,writeFile:$}=b("node:fs/promises");var z=Object.defineProperty,c=f((e,t)=>z(e,"name",{value:t,configurable:!0}),"s");const B="TASK_RUNNER_HINTS",F="TASK_RUNNER_PROTOCOL",L="1",H=c(()=>({cacheDisabled:!1,ignoredInputs:[],ignoredOutputs:[],trackedEnv:[],trackedEnvPatterns:[]}),"emptyHints"),O=c(e=>e.replaceAll("\\","/"),"normalize"),M=c((e,t)=>e===t||e.startsWith(`${t}/`),"isUnder"),P=c((e,t)=>{const r=O(e);return t.some(i=>M(r,i))},"isUnderAny"),V=c((e,t)=>{const r=H();for(const i of e.split(`
2
+ `)){const a=i.trim();if(!a)continue;let s;try{s=JSON.parse(a)}catch{continue}switch(s.op){case"disableCache":{r.cacheDisabled=!0;break}case"ignoreInput":{typeof s.path=="string"&&s.path&&r.ignoredInputs.push(O(T(t,s.path)));break}case"ignoreOutput":{typeof s.path=="string"&&s.path&&r.ignoredOutputs.push(O(T(t,s.path)));break}case"trackEnv":{typeof s.name=="string"&&s.name&&r.trackedEnv.push(s.name);break}case"trackEnvPattern":{typeof s.pattern=="string"&&s.pattern&&r.trackedEnvPatterns.push(s.pattern);break}}}return r},"collectHints"),Z=c((e,t)=>t.ignoredInputs.length===0&&t.ignoredOutputs.length===0?e:e.filter(r=>r.type==="write"?!P(r.path,t.ignoredOutputs):!P(r.path,t.ignoredInputs)),"applyAccessHints"),tt=c(e=>{if(!(e.ignoredInputs.length===0&&e.ignoredOutputs.length===0&&e.trackedEnv.length===0&&e.trackedEnvPatterns.length===0))return{ignoredInputs:e.ignoredInputs,ignoredOutputs:e.ignoredOutputs,trackedEnv:e.trackedEnv,trackedEnvPatterns:e.trackedEnvPatterns}},"summarizeHints"),et=c((e,t)=>t.trackedEnv.length===0&&t.trackedEnvPatterns.length===0?e:[...e,...t.trackedEnv,...t.trackedEnvPatterns],"mergeEnvPatterns");var J=Object.defineProperty,N=f((e,t)=>J(e,"name",{value:t,configurable:!0}),"m");class st{static{f(this,"TrackedTaskExecutor")}static{N(this,"TrackedTaskExecutor")}#t;#e;#s=new Set;constructor(t){this.#e=t,this.#t=new C(t)}get isTrackingSupported(){return!0}get isStraceSupported(){return this.#t.isSupported()}async execute(t,r,i){const a=r.cwd??(t.projectRoot?h(this.#e,t.projectRoot):this.#e),s=h(this.#e,"node_modules",".cache","task-runner");await S(s,{recursive:!0});const o=h(s,`hints-${I()}.ndjson`),m={[B]:o,[F]:L};try{let p;const u={...r.env,...m},d=this.#t.isInterposeSupported()||this.#t.isIatHookSupported()?D(i):void 0;if(this.#t.isSupported()){const n=await this.#t.track(i,{cwd:a,env:u});p={accesses:n.accesses,code:n.code,terminalOutput:n.output}}else if(d&&this.#t.isInterposeSupported()){const n=await this.#t.trackInterpose(d,{cwd:a,env:u});p={accesses:n.accesses,code:n.code,terminalOutput:n.output}}else if(d&&this.#t.isIatHookSupported()){const n=await this.#t.trackIatHook(d,{cwd:a,env:u});p={accesses:n.accesses,code:n.code,terminalOutput:n.output}}else p=await this.#n(i,a,u);return{...p,hints:await this.#r(o,a)}}finally{await v(o,{force:!0}).catch(()=>{})}}async#r(t,r){try{return V(await _(t,"utf8"),r)}catch{return H()}}async#n(t,r,i){const a=h(this.#e,"node_modules",".cache","task-runner");await S(a,{recursive:!0});const s=I(),o=h(a,`preload-${s}.log`),m=h(a,`preload-${s}.mjs`),p=U(o);await $(m,p);const u=2e3;return new Promise(d=>{const n=A(t,{cwd:r,env:q({...process.env,...i,NODE_OPTIONS:`${process.env.NODE_OPTIONS??""} --import ${m}`.trim()},r),maxBuffer:52428800});let E="",y="";n.stdout?.on("data",l=>{E+=l.toString()}),n.stderr?.on("data",l=>{y+=l.toString()});let w=!1;const k=N(()=>{w||(w=!0,this.#s.delete(n),(async()=>{let l=[];try{l=this.#a(await _(o,"utf8"))}catch{}await v(o,{force:!0}).catch(()=>{}),await v(m,{force:!0}).catch(()=>{}),d({accesses:l,code:n.exitCode??1,terminalOutput:E+y})})().catch(()=>{}))},"finish");n.on("close",k),n.on("exit",()=>{setTimeout(k,u).unref()}),n.on("error",k),this.#s.add(n)})}killAll(){this.#t.killAll();for(const t of this.#s)try{t.kill("SIGTERM")}catch{}this.#s.clear()}#a(t){const r=[],i=new Set;for(const a of t.split(`
3
+ `))if(a.trim())try{const s=JSON.parse(a);s.path&&!i.has(s.path)&&(i.add(s.path),s.path.startsWith(this.#e)&&r.push({path:s.path,type:s.type}))}catch{}return r}}export{st as T,Z as a,et as m,tt as s};
@@ -0,0 +1 @@
1
+ var J=Object.defineProperty;var E=(n,e)=>J(n,"name",{value:e,configurable:!0});import{createRequire as K}from"node:module";import{join as k}from"@visulima/path";const V=K(import.meta.url),U=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,O=E(n=>{if(typeof U<"u"&&U.versions&&U.versions.node){const[e,t]=U.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return U.getBuiltinModule(n)}return V(n)},"__cjs_getBuiltinModule"),{randomUUID:z}=O("node:crypto"),{stat:A,realpath:G,readdir:Q,readFile:$}=O("node:fs/promises");var W=Object.defineProperty,c=E((n,e)=>W(n,"name",{value:e,configurable:!0}),"f");const p=(1n<<128n)-1n,o=(1n<<64n)-1n,x=(1n<<32n)-1n,M=0x9E3779B1n,P=0x85EBCA77n,Y=0xC2B2AE3Dn,B=0x9E3779B185EBCA87n,y=0xC2B2AE3D27D4EB4Fn,R=0x165667B19E3779F9n,v=0x85EBCA77C2B2AE63n,Z=0x27D4EB2F165667C5n,ee=0x165667919E3779F9n,ne=0x9FB21C651E98DF25n,l=64,q=l/8,te=8,u=Buffer.from("b8fe6c3923a44bbe7c01812cf721ad1cded46de9839097db7240a4a4b7b3671fcb79e64eccc0e578825ad07dccff7221b8084674f743248ee03590e6813a264c3c2852bb91c300cb88d0658b1b532ea371644897a20df94e3819ef46a9deacd8a8fa763fe39c343ff9dcbbc7c70b4f1d8a51e04bcdb45931c89f7ec9d9787364eac5ac8334d3ebc3c581a0fffa1363eb170ddd51b7f0da49d316552629d4689e2b16be587d47a1fc8ff8b8d17ad031ce45cb3a8f95160428afd7fbcabb4b407e","hex"),g=c((n,e=0)=>Buffer.from(n.buffer,n.byteOffset+e,n.length-e),"getView"),re=c(n=>{const e=Buffer.allocUnsafe(8);return e.writeBigUInt64LE(n),e.readBigUInt64BE()},"bswap64"),ae=c(n=>{let e=n;return e=(e&0x0000FFFFn)<<16n|(e&0xFFFF0000n)>>16n,e=(e&0x00FF00FFn)<<8n|(e&0xFF00FF00n)>>8n,e},"bswap32"),oe=c((n,e)=>(n&x)*(e&x)&o,"multU32ToU64"),se=c((n,e)=>(n<<e|n>>32n-e)&x,"rotl32"),_=c((n,e)=>n^n>>e,"xorshift64"),j=c(n=>~n+1n&o,"inv64"),H=c((n,e)=>{const t=n*e&p;return t&o^t>>64n},"mul128Fold64"),b=c(n=>{let e=n;return e^=e>>37n,e=e*ee&o,e^=e>>32n,e},"avalanche"),w=c(n=>{let e=n;return e^=e>>33n,e=e*y&o,e^=e>>29n,e=e*R&o,e^=e>>32n,e},"avalanche64"),N=c((n,e,t)=>{for(let r=0;r<q;r++){const a=e.readBigUInt64LE(r*8),i=a^t.readBigUInt64LE(r*8);n[r^1]+=a,n[r]+=oe(i,i>>32n)}return n},"accumulate512"),D=c((n,e,t,r)=>{for(let a=0;a<r;a++)N(n,g(e,a*l),g(t,a*8));return n},"accumulate"),ie=c((n,e)=>{for(let t=0;t<q;t++){const r=e.readBigUInt64LE(t*8);let a=n[t];a=_(a,47n),a^=r,a*=M,n[t]=a&o}return n},"scrambleAcc"),m=c((n,e)=>H(n[0]^e.readBigUInt64LE(0),n[1]^e.readBigUInt64LE(te)),"mix2Accs"),S=c((n,e,t)=>{let r=t;return r+=m(n.slice(0),g(e,0)),r+=m(n.slice(2),g(e,16)),r+=m(n.slice(4),g(e,32)),r+=m(n.slice(6),g(e,48)),b(r&o)},"mergeAccs"),ce=c((n,e,t)=>{const r=Math.floor((t.byteLength-l)/8),a=l*r,i=Math.floor((e.byteLength-1)/a);for(let f=0;f<i;f++)D(n,g(e,f*a),t,r),ie(n,g(t,t.byteLength-l));const s=Math.floor((e.byteLength-1-a*i)/l);return D(n,g(e,i*a),t,s),N(n,g(e,e.byteLength-l),g(t,t.byteLength-l-7)),n},"hashLong"),de=c((n,e)=>{const t=new BigUint64Array([Y,B,y,R,v,P,Z,M]);ce(t,n,e);const r=S(t,g(e,11),BigInt(n.byteLength)*B&o);return S(t,g(e,e.byteLength-l-11),~(BigInt(n.byteLength)*y)&o)<<64n|r},"hashLong128b"),T=c((n,e,t)=>H((n.readBigUInt64LE(0)^e.readBigUInt64LE(0)+t)&o,(n.readBigUInt64LE(8)^e.readBigUInt64LE(8)-t)&o),"mix16B"),F=c((n,e,t,r,a)=>{let i=n&o,s=n>>64n&o;return i+=T(e,r,a),i^=t.readBigUInt64LE(0)+t.readBigUInt64LE(8),i&=o,s+=T(t,g(r,16),a),s^=e.readBigUInt64LE(0)+e.readBigUInt64LE(8),s&=o,s<<64n|i},"mix32B"),ge=c((n,e,t)=>{const r=n.byteLength,a=BigInt(n.readUInt8(r-1))|BigInt(r<<8)|BigInt(n.readUInt8(0)<<16)|BigInt(n.readUInt8(r>>1)<<24),i=(BigInt(e.readUInt32LE(0))^BigInt(e.readUInt32LE(4)))+t,s=(a^i)&o,f=(BigInt(e.readUInt32LE(8))^BigInt(e.readUInt32LE(12)))-t,d=(se(ae(a),13n)^f)&o;return(w(d)&o)<<64n|w(s)},"len1to3_128b"),fe=c((n,e,t)=>{const r=n.byteLength,a=n.readUInt32LE(0),i=n.readUInt32LE(r-4),s=BigInt(a)|BigInt(i)<<32n,f=(e.readBigUInt64LE(16)^e.readBigUInt64LE(24))+t&o;let d=(s^f)*(B+(BigInt(r)<<2n))&p;return d+=(d&o)<<65n,d&=p,d^=d>>67n,_(_(d&o,35n)*ne&o,28n)|b(d>>64n)<<64n},"len4to8_128b"),ue=c((n,e,t)=>{const r=n.byteLength,a=(e.readBigUInt64LE(32)^e.readBigUInt64LE(40))+t&o,i=(e.readBigUInt64LE(48)^e.readBigUInt64LE(56))-t&o,s=n.readBigUInt64LE();let f=n.readBigUInt64LE(r-8),d=(s^f^a)*B;const L=(d&o)+(BigInt(r-1)<<54n);d=d&(p^o)|L,f^=i,d+=f+(f&x)*(P-1n)<<64n,d&=p,d^=re(d>>64n);let I=(d&o)*y;return I+=(d>>64n)*y<<64n,I&=p,b(I&o)|b(I>>64n)<<64n},"len9to16_128b"),be=c((n,e)=>{const t=n.byteLength;return t>8?ue(n,u,e):t>=4?fe(n,u,e):t>0?ge(n,u,e):w(e^u.readBigUInt64LE(64)^u.readBigUInt64LE(72))|w(e^u.readBigUInt64LE(80)^u.readBigUInt64LE(88))<<64n},"len0to16_128b"),le=c((n,e,t)=>{let r=BigInt(n.byteLength)*B&o,a=BigInt(n.byteLength-1)/32n;for(;a>=0n;){const f=Number(a);r=F(r,g(n,16*f),g(n,n.byteLength-16*(f+1)),g(e,32*f),t),a--}let i=r+(r>>64n)&o;i=b(i);let s=(r&o)*B+(r>>64n)*v+(BigInt(n.byteLength)-t&o)*y;return s&=o,s=j(b(s)),i|s<<64n},"len17to128_128b"),Be=c((n,e,t)=>{let r=BigInt(n.byteLength)*B&o;for(let s=32;s<160;s+=32)r=F(r,g(n,s-32),g(n,s-16),g(e,s-32),t);r=b(r&o)|b(r>>64n)<<64n;for(let s=160;s<=n.byteLength;s+=32)r=F(r,g(n,s-32),g(n,s-16),g(e,3+s-160),t);r=F(r,g(n,n.byteLength-16),g(n,n.byteLength-32),g(e,103),j(t));let a=r+(r>>64n)&o;a=b(a);let i=(r&o)*B+(r>>64n)*v+(BigInt(n.byteLength)-t&o)*y;return i&=o,i=j(b(i)),a|i<<64n},"len129to240_128b"),he=c((n,e=0n)=>{const t=n.byteLength;return t<=16?be(n,e):t<=128?le(n,u,e):t<=240?Be(n,u,e):de(n,u)},"xxh3_128"),Le=c(n=>{const e=n>>64n&o,t=n&o;return e.toString(16).padStart(16,"0")+t.toString(16).padStart(16,"0")},"bigintToHex"),X=c(n=>Le(he(n)),"xxh3Hash");class Ie{static{E(this,"gn")}static{c(this,"Xxh3Hasher")}#e=[];update(e){return typeof e=="string"?this.#e.push(Buffer.from(e)):this.#e.push(e),this}digest(){return X(Buffer.concat(this.#e))}}const ye=c(()=>new Ie,"createXxh3Hasher");var pe=Object.defineProperty,h=E((n,e)=>pe(n,"name",{value:e,configurable:!0}),"r");const we=h(async n=>{try{const e=await $(n);return X(e)}catch{return}},"hashFile"),_e=h((...n)=>{const e=ye();for(const t of n)e.update(t),e.update("\0");return e.digest()},"hashStrings"),Ee=h(n=>{const e={};for(const t of Object.keys(n).toSorted()){const r=n[t];e[t]=r!=null&&typeof r=="object"&&!Array.isArray(r)?Ee(r):r}return e},"sortObjectKeys"),C=h(async(n,e,t)=>{const r=t??new Set,a=[];try{if((await A(n)).isFile())return[n];const i=await G(n);if(r.has(i))return[];r.add(i);const s=(await Q(n,{withFileTypes:!0})).map(async d=>{if(e.has(d.name))return[];const L=k(n,d.name);if(d.isDirectory())return C(L,e,r);if(d.isFile())return[L];if(d.isSymbolicLink())try{const I=await A(L);if(I.isFile())return[L];if(I.isDirectory())return C(L,e,r)}catch{}return[]}),f=await Promise.all(s);for(const d of f)a.push(...d)}catch{}return a},"collectFiles"),je=h((n,e)=>e.projectRoot?k(n,e.projectRoot):n,"resolveTaskCwd"),ve=h((n,e,t)=>({code:1,endTime:Date.now(),startTime:t,status:"failure",task:n,terminalOutput:e instanceof Error?e.message:String(e)}),"createFailureResult"),Ue={optional:!0,peer:!0},Ae=h(async(n,e=Ue)=>{try{const t=await $(n,"utf8"),r=JSON.parse(t),a=new Set,i=[r.dependencies,r.devDependencies];e.peer!==!1&&i.push(r.peerDependencies),e.optional!==!1&&i.push(r.optionalDependencies);for(const s of i)if(s)for(const f of Object.keys(s))a.add(f);return a}catch{return}},"readPackageDeps"),De=h(()=>z(),"uniqueId");export{Ae as E,De as O,we as T,X,_e as b,C as d,ye as f,Ee as h,ve as j,je as v};
@@ -0,0 +1 @@
1
+ var y=Object.defineProperty;var l=(t,n)=>y(t,"name",{value:n,configurable:!0});var b=Object.defineProperty,d=l((t,n)=>b(t,"name",{value:n,configurable:!0}),"i");const R=d(async(t,n,a,v)=>{const{delay:p,onRetry:m,tries:r}=v;if(r===0)return t(n,a);const x=new Map,c=[],w=a.onEvent;let o=[...n],u=0;for(;o.length>0;){const i=o;o=[];const E=await t(i,{...a,onEvent:d(e=>{w?.(e)},"onEvent")});for(const e of E.closeEvents){if(e.exitCode!==0){const s=x.get(e.index)??{attempts:0,commandIndex:e.index};if(s.attempts++,x.set(e.index,s),r===-1||s.attempts<=r){m&&await m(s.attempts,e.index,e.exitCode??1);const f=p==="exponential"?Math.min(2**(s.attempts-1)*1e3,3e4):p;f>0&&await C(f),o.push(i[e.index]);continue}}c.push(e)}if(u++,u>1e3)break}const h=c.every(i=>i.exitCode===0);return{closeEvents:c,success:h}},"withRestart"),C=d(t=>new Promise(n=>{setTimeout(n,t)}),"sleep");export{R as withRestart};