UNPKG

wonder.js

Version:
163 lines (147 loc) 7.42 kB
'use strict'; var Most = require("most"); var Curry = require("bs-platform/lib/js/curry.js"); var Js_option = require("bs-platform/lib/js/js_option.js"); var BufferUtils$Wonderjs = require("../../../asset/utils/BufferUtils.js"); var ArrayService$Wonderjs = require("../../../service/atom/ArrayService.js"); var DataViewCommon$Wonderjs = require("../../../asset/generate/DataViewCommon.js"); var GenerateABUtils$Wonderjs = require("../../utils/GenerateABUtils.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var ImmutableHashMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ImmutableHashMapService.js"); function _getHashId (arrayBuffer){ return crypto.subtle.digest("SHA-256", arrayBuffer) .then(hash => { // here hash is an arrayBuffer, so we'll convert it to its hex version let result = ''; const view = new DataView(hash); for (let i = 0; i < hash.byteLength; i += 4) { result += ('00000000' + view.getUint32(i).toString(16)).slice(-8); } return result; }); }; function buildManifestData(dependencyRelation, param, buildManifestFunc) { var abRelativePath = param[0]; return Most.fromPromise(_getHashId(param[1]).then((function (hashId) { return Promise.resolve(Curry._2(buildManifestFunc, hashId, Js_option.getWithDefault(ArrayService$WonderCommonlib.createEmpty(/* () */0), ImmutableHashMapService$WonderCommonlib.get(abRelativePath, dependencyRelation)))); }))); } function _writeBuffer(headerAndManifestJsonAlignedByteOffset, buffer, wholeArrayBuffer) { var uint8Array = new Uint8Array(wholeArrayBuffer); return BufferUtils$Wonderjs.mergeArrayBuffer(uint8Array, buffer, headerAndManifestJsonAlignedByteOffset).buffer; } function generateAB(bufferTotalAlignedByteLength, manifestJsonUint8Array, buffer) { var match = GenerateABUtils$Wonderjs.computeByteLength(bufferTotalAlignedByteLength, manifestJsonUint8Array); var dataView = DataViewCommon$Wonderjs.create(new ArrayBuffer(match[2])); var byteOffset = GenerateABUtils$Wonderjs.writeHeader(match[0], bufferTotalAlignedByteLength, dataView); var emptyEncodedUint8Data = GenerateABUtils$Wonderjs.getEmptyEncodedUint8Data(/* () */0); var match$1 = GenerateABUtils$Wonderjs.writeJson(byteOffset, /* tuple */[ emptyEncodedUint8Data, match[1], manifestJsonUint8Array ], dataView); return _writeBuffer(match$1[0], buffer, match$1[2].buffer); } var All = /* module */[ /* _getHashId */_getHashId, /* buildManifestData */buildManifestData, /* _writeBuffer */_writeBuffer, /* generateAB */generateAB ]; function addManifestData(dependencyRelation, param) { var sab = param[1]; var sabRelativePath = param[0]; return Most.map((function (manifestData) { var manifestJsonUint8Array = GenerateABUtils$Wonderjs.buildJsonUint8Array(manifestData); return /* tuple */[ manifestData[/* hashId */0], sabRelativePath, generateAB(BufferUtils$Wonderjs.alignedLength(sab.byteLength), manifestJsonUint8Array, sab) ]; }), buildManifestData(dependencyRelation, /* tuple */[ sabRelativePath, sab ], (function (hashId, dependencyRelation) { return /* record */[ /* hashId */hashId, /* dependencyRelation */dependencyRelation ]; }))); } var SAB = /* module */[/* addManifestData */addManifestData]; function addManifestData$1(dependencyRelation, param) { var rab = param[1]; var rabRelativePath = param[0]; return Most.map((function (manifestData) { var manifestJsonUint8Array = GenerateABUtils$Wonderjs.buildJsonUint8Array(manifestData); return /* tuple */[ manifestData[/* hashId */0], rabRelativePath, generateAB(BufferUtils$Wonderjs.alignedLength(rab.byteLength), manifestJsonUint8Array, rab) ]; }), buildManifestData(dependencyRelation, /* tuple */[ rabRelativePath, rab ], (function (hashId, dependencyRelation) { return /* record */[ /* hashId */hashId, /* dependencyRelation */dependencyRelation ]; }))); } var RAB = /* module */[/* addManifestData */addManifestData$1]; function _addAllRABManifestData(rabDataArr, dependencyRelation) { return Most.reduce((function (param, param$1) { var rabRelativePath = param$1[1]; return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(rabRelativePath, param$1[0], param[0]), ArrayService$Wonderjs.push(/* tuple */[ rabRelativePath, param$1[2] ], param[1]) ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), ArrayService$WonderCommonlib.createEmpty(/* () */0) ], Most.mergeArray(rabDataArr.map((function (data) { return addManifestData$1(dependencyRelation, data); })))); } function _addAllSABManifestData(wholeHashIdMap, sabDataArr, dependencyRelation) { return Most.reduce((function (param, param$1) { var sabRelativePath = param$1[1]; return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(sabRelativePath, param$1[0], param[0]), ArrayService$Wonderjs.push(/* tuple */[ sabRelativePath, param$1[2] ], param[1]) ]; }), /* tuple */[ wholeHashIdMap, ArrayService$WonderCommonlib.createEmpty(/* () */0) ], Most.mergeArray(sabDataArr.map((function (data) { return addManifestData(dependencyRelation, data); })))); } function addManifestData$2(dependencyRelation, param) { var sabDataArr = param[0]; ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0); return Most.fromPromise(_addAllRABManifestData(param[1], dependencyRelation).then((function (param) { var newRabDataArr = param[1]; return _addAllSABManifestData(param[0], sabDataArr, dependencyRelation).then((function (param) { return Promise.resolve(/* tuple */[ param[0], newRabDataArr, param[1] ]); })); }))); } exports.All = All; exports.SAB = SAB; exports.RAB = RAB; exports._addAllRABManifestData = _addAllRABManifestData; exports._addAllSABManifestData = _addAllSABManifestData; exports.addManifestData = addManifestData$2; /* most Not a pure module */