@wasmer/io-devices
Version:
Isomorphic library to implement the experimental Wasmer I/O devices for wasmfs instances 🖼️🎮
8 lines (7 loc) • 3.31 kB
JavaScript
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var IO_DEVICES_CONSTANTS={FILE_PATH:{DEVICE_FRAMEBUFFER_ZERO:{PATH:"/_wasmer/dev/fb0",FRAME_BUFFER:"/_wasmer/dev/fb0/fb",VIRTUAL_SIZE:"/_wasmer/dev/fb0/virtual_size",DRAW:"/_wasmer/dev/fb0/draw",INPUT:"/_wasmer/dev/fb0/input"}}},TextDecoder=void 0;"object"===typeof window?TextDecoder=window.TextDecoder:"object"===typeof self?TextDecoder=self.TextDecoder:"function"===typeof require&&(TextDecoder=require("util").TextDecoder);
var IoDevicesDefault=function(){function c(a){this.wasmFs=a;this.wasmFs.volume.mkdirSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.PATH,{recursive:!0});this.wasmFs.volume.writeFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER,"");this.wasmFs.volume.writeFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE,"");this.wasmFs.volume.writeFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.DRAW,"");this.wasmFs.volume.writeFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,
"");this.windowSizeCallback=function(){};this.bufferIndexDisplayCallback=function(){};this.inputCallback=function(){return new Uint8Array};this.fdFrameBuffer=this.wasmFs.volume.openSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER,"w+");this.fdBufferIndexDisplay=this.wasmFs.volume.openSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.DRAW,"w+");this.fdWindowSize=this.wasmFs.fs.openSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE,"w+");this.fdInput=
this.wasmFs.volume.openSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,"w+");var b=this,c=this.wasmFs.volume.fds[this.fdInput].node.read;this.wasmFs.volume.fds[this.fdInput].node.read=function(){var a=b.inputCallback();b.wasmFs.volume.writeFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,a);a=Array.prototype.slice.call(arguments);return c.apply(b.wasmFs.volume.fds[b.fdInput].node,a)};var d=this.wasmFs.volume.fds[this.fdWindowSize].node.write;this.wasmFs.volume.fds[this.fdWindowSize].node.write=
function(){var a=Array.prototype.slice.call(arguments);a=d.apply(b.wasmFs.volume.fds[b.fdWindowSize].node,a);b.windowSizeCallback();return a};var e=this.wasmFs.volume.fds[this.fdBufferIndexDisplay].node.write;this.wasmFs.volume.fds[this.fdBufferIndexDisplay].node.write=function(){var a=Array.prototype.slice.call(arguments);a=e.apply(b.wasmFs.volume.fds[b.fdBufferIndexDisplay].node,a);b.bufferIndexDisplayCallback();return a}}c.prototype.getFrameBuffer=function(){return this.wasmFs.fs.readFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER)};
c.prototype.getWindowSize=function(){var a=this.wasmFs.fs.readFileSync(IO_DEVICES_CONSTANTS.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE);return 0<a.length?(a=(new TextDecoder("utf-8")).decode(a).split("x"),[parseInt(a[0],10),parseInt(a[1],10)]):[0,0]};c.prototype.setWindowSizeCallback=function(a){this.windowSizeCallback=a};c.prototype.setBufferIndexDisplayCallback=function(a){this.bufferIndexDisplayCallback=a};c.prototype.setInputCallback=function(a){this.inputCallback=a};return c}(),IoDevices=
IoDevicesDefault;exports.IO_DEVICES_CONSTANTS=IO_DEVICES_CONSTANTS;exports.IoDevices=IoDevices;exports.default=IoDevicesDefault