UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 1.69 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import{Log}from"./Log.js";const UIStrings={collectingContent:"Collecting content…",writingFile:"Writing file…"},str_=i18n.i18n.registerUIStrings("models/har/Writer.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class Writer{static async write(t,e,n){const r=new Common.Progress.CompositeProgress(n),i=await Writer.harStringForRequests(e,r);n.isCanceled()||await Writer.writeToStream(t,r,i)}static async harStringForRequests(t,e){const n=e.createSubProgress();n.setTitle(i18nString(UIStrings.collectingContent)),n.setTotalWork(t.length),t.sort(((t,e)=>t.issueTime()-e.issueTime()));const r=await Log.build(t),i=[];for(let e=0;e<t.length;e++){const n=t[e].contentData();i.push(n.then(o.bind(null,r.entries[e])))}return await Promise.all(i),n.done(),n.isCanceled()?"":JSON.stringify({log:r},null,jsonIndent);function o(t,e){n.incrementWorked();let r=e.encoded;if(null!==e.content){let n=e.content;n&&!r&&function(t){for(let n=0;n<t.length;n++)if(!((e=t.charCodeAt(n))<55296||e>=57344&&e<64976||e>65007&&e<=1114111&&65534!=(65534&e)))return!0;var e;return!1}(n)&&(n=Platform.StringUtilities.toBase64(n),r=!0),t.response.content.text=n}r&&(t.response.content.encoding="base64")}}static async writeToStream(t,e,n){const r=e.createSubProgress();r.setTitle(i18nString(UIStrings.writingFile)),r.setTotalWork(n.length);for(let e=0;e<n.length&&!r.isCanceled();e+=chunkSize){const i=n.substr(e,chunkSize);await t.write(i),r.incrementWorked(i.length)}r.done()}}export const jsonIndent=2;export const chunkSize=1e5;