UNPKG

909 BJavaScriptView Raw
1const VirtualMachineInstance = require('./virtual-machine');
2const base64ArrayBuffer = require('./base64-arraybuffer');
3function extractConstants($bytecode) {
4 // console.log($bytecode);
5 const textView = VirtualMachineInstance.getTypedArrayByIndex($bytecode, 6, 2);
6 const unis = [];
7 for (let i = 0; i < textView.length; i++) {
8 unis.push(String.fromCharCode(textView[i]));
9 }
10 return JSON.parse(unis.join(''));
11}
12
13function loadBytecode($bytecode) {
14 if (typeof $bytecode === 'string') {
15 $bytecode = base64ArrayBuffer.decode($bytecode);
16 }
17 const $constants = extractConstants($bytecode);
18 const $globals = new Map();
19
20 return function instance($model, $funcLibRaw, $batchingStrategy) {
21 const virtualMachine = new VirtualMachineInstance($constants, $globals, $bytecode, $model, $funcLibRaw, $batchingStrategy)
22 return virtualMachine.$res;
23 };
24}
25
26module.exports = loadBytecode;