UNPKG

wonder.js

Version:
115 lines (107 loc) 5.9 kB
'use strict'; 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 */