@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 885 B
JavaScript
import*as Common from"../../core/common/common.js";import{ChunkedFileReader}from"./FileUtils.js";export class TempFile{#e;constructor(){this.#e=null}write(e){this.#e&&e.unshift(this.#e),this.#e=new Blob(e,{type:"text/plain"})}read(){return this.readRange()}size(){return this.#e?this.#e.size:0}async readRange(e,t){if(!this.#e)return Common.Console.Console.instance().error("Attempt to read a temp file that was never written"),"";const o="number"==typeof e||"number"==typeof t?this.#e.slice(e,t):this.#e,l=new FileReader;try{await new Promise(((e,t)=>{l.onloadend=e,l.onerror=t,l.readAsText(o)}))}catch(e){Common.Console.Console.instance().error("Failed to read from temp file: "+e.message)}return l.result}async copyToOutputStream(e,t){if(!this.#e)return e.close(),null;const o=new ChunkedFileReader(this.#e,1e7,t);return o.read(e).then((e=>e?null:o.error()))}remove(){this.#e=null}}