UNPKG

wonder.js

Version:
119 lines (113 loc) 6.4 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 FetchCommon$Wonderjs = require("./FetchCommon.js"); var AssembleUtils$Wonderjs = require("./utils/AssembleUtils.js"); var StateDataMain$Wonderjs = require("../service/state/main/data/StateDataMain.js"); var ConvertStreamSystem$Wonderjs = require("./converter/ConvertStreamSystem.js"); var StateDataMainService$Wonderjs = require("../service/state/main/state/StateDataMainService.js"); var ReadStreamChunkSystem$Wonderjs = require("./loader/ReadStreamChunkSystem.js"); var AssembleWholeWDBSystem$Wonderjs = require("./assemble/AssembleWholeWDBSystem.js"); var OperateLoadMainService$Wonderjs = require("../service/state/main/load/OperateLoadMainService.js"); var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js"); function _handleNotSupportStreamLoad(response, wdbPath, param, state) { var handleWhenLoadWholeWDBFunc = param[1]; var handleWhenLoadingFunc = param[0]; Log$WonderLog.warn("your browser does not seem to have the Streams API yet, fallback to load whole wdb"); return response.arrayBuffer().then((function (wdb) { StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, OperateLoadMainService$Wonderjs.markCanExecScriptAllEventFunction(false, state)); Curry._3(handleWhenLoadingFunc, wdb.byteLength, FetchCommon$Wonderjs.getContentLength(response), wdbPath); return Promise.resolve(wdb); })).then((function (wdb) { var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData); var state$1 = OperateLoadMainService$Wonderjs.markCanExecScriptAllEventFunction(true, state); return Most.drain(Most.tap((function (param) { return Curry._3(handleWhenLoadWholeWDBFunc, param[0], param[1], param[2]); }), AssembleWholeWDBSystem$Wonderjs.assemble(wdb, /* tuple */[ true, true, true, true, true ], state$1))).then((function (param) { return Promise.resolve(/* () */0); })); })); } function _streamLoad(response, param, param$1, state) { var handleWhenDoneFunc = param$1[2]; var handleBeforeStartLoopFunc = param$1[1]; var handleWhenLoadingFunc = param$1[0]; var default11Image = param[1]; var wdbPath = param[0]; var contentLength = FetchCommon$Wonderjs.getContentLength(response); var totalUint8Array = new Uint8Array(contentLength); new ReadableStream({ start: (function (controller) { var reader = FetchCommon$Wonderjs.getReader(response); return ReadStreamChunkSystem$Wonderjs.read(/* tuple */[ default11Image, controller, /* tuple */[ contentLength, wdbPath, handleWhenLoadingFunc ], handleBeforeStartLoopFunc, handleWhenDoneFunc ], /* tuple */[ /* array */[], totalUint8Array ], /* tuple */[ undefined, /* array */[], undefined, 0, /* array */[], MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0) ], reader); }) }); return Promise.resolve(/* () */0); } function load(wdbPath, param, state) { var handleWhenLoadWholeWDBFunc = param[4]; var handleWhenDoneFunc = param[3]; var handleBeforeStartLoopFunc = param[2]; var handleWhenLoadingFunc = param[1]; var fetchFunc = param[0]; var match = ConvertStreamSystem$Wonderjs.getDefault11ImageUint8ArrayData(/* () */0); return Most.flatMap((function (image) { return Most.fromPromise(fetchFunc(wdbPath).then((function (response) { var match = !response.ok; if (match) { var status = response.status; var statusText = response.statusText; return Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("streamLoad", "" + (String(status) + (" " + (String(statusText) + ""))), "", "", "")); } else { var match$1 = !FetchCommon$Wonderjs.isSupportStreamLoad(response); if (match$1) { return _handleNotSupportStreamLoad(response, wdbPath, /* tuple */[ handleWhenLoadingFunc, handleWhenLoadWholeWDBFunc ], state); } else { return _streamLoad(response, /* tuple */[ wdbPath, image ], /* tuple */[ handleWhenLoadingFunc, handleBeforeStartLoopFunc, handleWhenDoneFunc, handleWhenLoadWholeWDBFunc ], state); } } }))); }), AssembleUtils$Wonderjs.buildLoadImageStream(match[0].buffer, match[1], match[2])); } exports._handleNotSupportStreamLoad = _handleNotSupportStreamLoad; exports._streamLoad = _streamLoad; exports.load = load; /* most Not a pure module */