UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.21 kB
import*as TextUtils from"../../models/text_utils/text_utils.js";import*as Common from"../common/common.js";import*as Platform from"../platform/platform.js";import{Events}from"./NetworkRequest.js";export class Resource{#e;#t;#n;#r;#s;#i;#a;#o;#l;#d;#u;#h;#c;#I;#m;#p;constructor(e,t,n,r,s,i,a,o,l,d){this.#e=e,this.#t=t,this.url=n,this.#r=r,this.#s=s,this.#i=i,this.#a=a||Common.ResourceType.resourceTypes.Other,this.#o=o,this.#l=!1,this.#d=l&&Platform.DateUtilities.isValid(l)?l:null,this.#u=d,this.#I=[],this.#t&&!this.#t.finished&&this.#t.addEventListener(Events.FinishedLoading,this.requestFinished,this)}lastModified(){if(this.#d||!this.#t)return this.#d;const e=this.#t.responseLastModified(),t=e?new Date(e):null;return this.#d=t&&Platform.DateUtilities.isValid(t)?t:null,this.#d}contentSize(){return"number"!=typeof this.#u&&this.#t?this.#t.resourceSize:this.#u}get request(){return this.#t}get url(){return this.#n}set url(e){this.#n=e,this.#m=new Common.ParsedURL.ParsedURL(e)}get parsedURL(){return this.#m}get documentURL(){return this.#r}get frameId(){return this.#s}get loaderId(){return this.#i}get displayName(){return this.#m?this.#m.displayName:""}resourceType(){return this.#t?this.#t.resourceType():this.#a}get mimeType(){return this.#t?this.#t.mimeType:this.#o}get content(){return this.#h}get isGenerated(){return this.#l}set isGenerated(e){this.#l=e}contentURL(){return this.#n}contentType(){return this.resourceType()===Common.ResourceType.resourceTypes.Document&&-1!==this.mimeType.indexOf("javascript")?Common.ResourceType.resourceTypes.Script:this.resourceType()}async requestContent(){return void 0!==this.#h?{content:this.#h,isEncoded:this.#c}:new Promise((e=>{this.#I.push(e),this.#t&&!this.#t.finished||this.innerRequestContent()}))}canonicalMimeType(){return this.contentType().canonicalMimeType()||this.mimeType}async searchInContent(e,t,n){if(!this.frameId)return[];if(this.request)return this.request.searchInContent(e,t,n);return(await this.#e.target().pageAgent().invoke_searchInResource({frameId:this.frameId,url:this.url,query:e,caseSensitive:t,isRegex:n})).result||[]}async populateImageSource(e){const{content:t}=await this.requestContent(),n=this.#c;e.src=TextUtils.ContentProvider.contentAsDataURL(t,this.#o,n)||this.#n}requestFinished(){this.#t&&this.#t.removeEventListener(Events.FinishedLoading,this.requestFinished,this),this.#I.length&&this.innerRequestContent()}async innerRequestContent(){if(this.#p)return;this.#p=!0;let e=null;if(this.request){const t=await this.request.contentData();t.error||(this.#h=t.content,this.#c=t.encoded,e={content:t.content,isEncoded:t.encoded})}if(!e){const t=await this.#e.target().pageAgent().invoke_getResourceContent({frameId:this.frameId,url:this.url}),n=t.getError();n?(this.#h=null,e={content:null,error:n,isEncoded:!1}):(this.#h=t.content,e={content:t.content,isEncoded:t.base64Encoded}),this.#c=t.base64Encoded}null===this.#h&&(this.#c=!1);for(const t of this.#I.splice(0))t(e);this.#p=void 0}hasTextContent(){return!!this.#a.isTextType()||this.#a===Common.ResourceType.resourceTypes.Other&&(Boolean(this.#h)&&!this.#c)}frame(){return this.#s?this.#e.frameForId(this.#s):null}statusCode(){return this.#t?this.#t.statusCode:0}}