wonder.js
Version:
115 lines (107 loc) • 5.9 kB
JavaScript
;
var Most = require("most");
var Curry = require("bs-platform/lib/js/curry.js");
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js");
var MostUtils$Wonderjs = require("../../../../../asset/utils/MostUtils.js");
var ArrayService$Wonderjs = require("../../../../atom/ArrayService.js");
var OptionService$Wonderjs = require("../../../../atom/OptionService.js");
var StateDataMain$Wonderjs = require("../../data/StateDataMain.js");
var JobConfigService$Wonderjs = require("../../../../primitive/JobConfigService.js");
var IsDebugMainService$Wonderjs = require("../../state/IsDebugMainService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var MutableHashMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableHashMapService.js");
var OperateMainWorkerJobMainService$Wonderjs = require("./OperateMainWorkerJobMainService.js");
function _buildStreamArr(param, findFunc, getJobHandleFunc, state) {
var jobs = param[4];
var stateData = param[3];
var pipelineJobs = param[1];
var jobHandleMap = param[0];
return ArrayService$WonderCommonlib.reduceOneParam((function (streamArr, param) {
var subJobName = param[/* name */0];
var match = JobConfigService$Wonderjs.findFirst(pipelineJobs, subJobName, (function (param) {
return JobConfigService$Wonderjs.filterTargetName(param[/* name */0], subJobName);
}));
if (match !== undefined) {
return OperateMainWorkerJobMainService$Wonderjs.addCustomJobHandleToStreamArr(subJobName, /* array */[], state[/* jobRecord */1][/* workerCustomMainLoopTargetJobMap */7], stateData, ArrayService$Wonderjs.push(Curry._3(findFunc, /* tuple */[
match,
pipelineJobs,
jobHandleMap,
jobs,
stateData
], getJobHandleFunc, state), streamArr));
} else {
var match$1 = OperateMainWorkerJobMainService$Wonderjs.getExecutableJob(jobs, subJobName);
var handleFunc = Curry._2(getJobHandleFunc, subJobName, jobHandleMap);
return OperateMainWorkerJobMainService$Wonderjs.addCustomJobHandleToStreamArr(subJobName, /* array */[Curry._2(handleFunc, match$1[/* flags */1], stateData)], state[/* jobRecord */1][/* workerCustomMainLoopTargetJobMap */7], stateData, streamArr);
}
}), /* array */[], param[2].filter((function (param) {
return !MutableHashMapService$WonderCommonlib.has(param[/* name */0], state[/* jobRecord */1][/* workerCustomMainLoopRemovedDefaultJobMap */9]);
})));
}
function _find(param, getJobHandleFunc, state) {
var stateData = param[4];
var mainLoopJobs = param[3];
var jobHandleMap = param[2];
var pipelineJobs = param[1];
var match = param[0];
var pipelineSubJobs = match[/* jobs */2];
var link = match[/* link */1];
switch (link) {
case "concat" :
return MostUtils$Wonderjs.concatArray(_buildStreamArr(/* tuple */[
jobHandleMap,
pipelineJobs,
pipelineSubJobs,
stateData,
mainLoopJobs
], _find, getJobHandleFunc, state));
case "merge" :
return Most.mergeArray(_buildStreamArr(/* tuple */[
jobHandleMap,
pipelineJobs,
pipelineSubJobs,
stateData,
mainLoopJobs
], _find, getJobHandleFunc, state));
default:
return Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("_find", "invalid link: " + (String(link) + ""), "", "", ""));
}
}
function _getFrameJobName(param) {
return "frame";
}
function _findFrameJob(jobs) {
Contract$WonderLog.requireCheck((function (param) {
return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("frame job only has one", "not"), (function (param) {
return Contract$WonderLog.Operators[/* = */0](jobs.filter((function (param) {
return JobConfigService$Wonderjs.filterTargetName(param[/* name */0], "frame");
})).length, 1);
}));
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData));
var jobName = "frame";
return JobConfigService$Wonderjs.unsafeFindFirst(jobs, jobName, (function (param) {
return JobConfigService$Wonderjs.filterTargetName(param[/* name */0], jobName);
}));
}
function getMainLoopJobStream(jobHandleMap, stateData, getJobHandleFunc, state) {
var match = OptionService$Wonderjs.unsafeGet(state[/* workerJobRecord */3]);
var setting = match[/* setting */0];
var match$1 = JobConfigService$Wonderjs.unsafeFindFirst(match[/* mainLoopPipelines */2], setting[/* mainLoopPipeline */2], (function (param) {
return JobConfigService$Wonderjs.filterTargetName(param[/* name */0], setting[/* mainLoopPipeline */2]);
}));
var jobs = match$1[/* jobs */1];
return _find(/* tuple */[
_findFrameJob(jobs),
jobs,
jobHandleMap,
match[/* mainLoopJobs */5],
stateData
], getJobHandleFunc, state);
}
exports._buildStreamArr = _buildStreamArr;
exports._find = _find;
exports._getFrameJobName = _getFrameJobName;
exports._findFrameJob = _findFrameJob;
exports.getMainLoopJobStream = getMainLoopJobStream;
/* most Not a pure module */