MCPcopy
hub / github.com/midrender/revideo / join

Function join

packages/core/src/flow/join.ts:43–77  ·  view source on GitHub ↗
(
  first: ThreadGenerator | boolean,
  ...tasks: ThreadGenerator[]
)

Source from the content-addressed store, hash-verified

41 ...tasks: ThreadGenerator[]
42): ThreadGenerator;
43export function* join(
44 first: ThreadGenerator | boolean,
45 ...tasks: ThreadGenerator[]
46): ThreadGenerator {
47 let all = true;
48 if (typeof first === 'boolean') {
49 all = first;
50 } else {
51 tasks.push(first);
52 }
53
54 const parent = useThread();
55 const threads = <Thread[]>(
56 tasks
57 .map(task => parent.children.find(thread => thread.runner === task))
58 .filter(thread => thread)
59 );
60
61 const startTime = parent.time();
62 let childTime;
63 if (all) {
64 while (threads.find(thread => !thread.canceled)) {
65 yield;
66 }
67 childTime = Math.max(...threads.map(thread => thread.time()));
68 } else {
69 while (!threads.find(thread => thread.canceled)) {
70 yield;
71 }
72 const canceled = threads.filter(thread => thread.canceled);
73 childTime = Math.min(...canceled.map(thread => thread.time()));
74 }
75
76 parent.time(Math.max(startTime, childTime));
77}

Callers 7

generatorMethod · 0.90
state.test.tsxFile · 0.90
join.test.tsFile · 0.90
anyFunction · 0.90
sequenceFunction · 0.90
allFunction · 0.90
cancel.test.tsFile · 0.90

Calls 2

useThreadFunction · 0.90
timeMethod · 0.80

Tested by

no test coverage detected