@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 7.1 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import{IsolatedFileSystem}from"./IsolatedFileSystem.js";const UIStrings={unableToAddFilesystemS:"Unable to add filesystem: {PH1}"},str_=i18n.i18n.registerUIStrings("models/persistence/IsolatedFileSystemManager.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let isolatedFileSystemManagerInstance;export class IsolatedFileSystemManager extends Common.ObjectWrapper.ObjectWrapper{fileSystemsInternal;callbacks;progresses;workspaceFolderExcludePatternSettingInternal;fileSystemRequestResolve;fileSystemsLoadedPromise;constructor(){super(),this.fileSystemsInternal=new Map,this.callbacks=new Map,this.progresses=new Map,Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.FileSystemRemoved,this.onFileSystemRemoved,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.FileSystemAdded,(e=>{this.onFileSystemAdded(e)}),this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.FileSystemFilesChangedAddedRemoved,this.onFileSystemFilesChanged,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.IndexingTotalWorkCalculated,this.onIndexingTotalWorkCalculated,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.IndexingWorked,this.onIndexingWorked,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.IndexingDone,this.onIndexingDone,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.SearchCompleted,this.onSearchCompleted,this);const e=["/Thumbs.db$","/ehthumbs.db$","/Desktop.ini$","/\\$RECYCLE.BIN/"],t=["/\\.DS_Store$","/\\.Trashes$","/\\.Spotlight-V100$","/\\.AppleDouble$","/\\.LSOverride$","/Icon$","/\\._.*$"],s=["/.*~$"];let n=["/node_modules/","/bower_components/","/\\.devtools","/\\.git/","/\\.sass-cache/","/\\.hg/","/\\.idea/","/\\.svn/","/\\.cache/","/\\.project/"];n=Host.Platform.isWin()?n.concat(e):Host.Platform.isMac()?n.concat(t):n.concat(s);const o=n.join("|");this.workspaceFolderExcludePatternSettingInternal=Common.Settings.Settings.instance().createRegExpSetting("workspaceFolderExcludePattern",o,Host.Platform.isWin()?"i":""),this.fileSystemRequestResolve=null,this.fileSystemsLoadedPromise=this.requestFileSystems()}static instance(e={forceNew:null}){const{forceNew:t}=e;return isolatedFileSystemManagerInstance&&!t||(isolatedFileSystemManagerInstance=new IsolatedFileSystemManager),isolatedFileSystemManagerInstance}static removeInstance(){isolatedFileSystemManagerInstance=null}requestFileSystems(){let e;const t=new Promise((t=>{e=t}));return Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.FileSystemsLoaded,(function(e){const t=e.data,n=[];for(let e=0;e<t.length;++e)n.push(this.innerAddFileSystem(t[e],!1));Promise.all(n).then(s)}),this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.requestFileSystems(),t;function s(t){e(t.filter((e=>Boolean(e))))}}addFileSystem(e){return Host.userMetrics.actionTaken("overrides"===e?Host.UserMetrics.Action.AddFileSystemForOverrides:Host.UserMetrics.Action.AddFileSystemToWorkspace),new Promise((t=>{this.fileSystemRequestResolve=t,Host.InspectorFrontendHost.InspectorFrontendHostInstance.addFileSystem(e||"")}))}removeFileSystem(e){Host.userMetrics.actionTaken("overrides"===e.type()?Host.UserMetrics.Action.RemoveFileSystemForOverrides:Host.UserMetrics.Action.RemoveFileSystemFromWorkspace),Host.InspectorFrontendHost.InspectorFrontendHostInstance.removeFileSystem(e.embedderPath())}waitForFileSystems(){return this.fileSystemsLoadedPromise}innerAddFileSystem(e,t){const s=e.fileSystemPath,n=Common.ParsedURL.ParsedURL.rawPathToUrlString(e.fileSystemPath);return IsolatedFileSystem.create(this,n,s,e.type,e.fileSystemName,e.rootURL).then(function(e){if(!e)return null;this.fileSystemsInternal.set(n,e),t&&this.dispatchEventToListeners(Events.FileSystemAdded,e);return e}.bind(this))}addPlatformFileSystem(e,t){this.fileSystemsInternal.set(e,t),this.dispatchEventToListeners(Events.FileSystemAdded,t)}onFileSystemAdded(e){const{errorMessage:t,fileSystem:s}=e.data;if(t){if("<selection cancelled>"!==t&&Common.Console.Console.instance().error(i18nString(UIStrings.unableToAddFilesystemS,{PH1:t})),!this.fileSystemRequestResolve)return;this.fileSystemRequestResolve.call(null,null),this.fileSystemRequestResolve=null}else s&&this.innerAddFileSystem(s,!0).then((e=>{this.fileSystemRequestResolve&&(this.fileSystemRequestResolve.call(null,e),this.fileSystemRequestResolve=null)}))}onFileSystemRemoved(e){const t=e.data,s=Common.ParsedURL.ParsedURL.rawPathToUrlString(t),n=this.fileSystemsInternal.get(s);n&&(this.fileSystemsInternal.delete(s),n.fileSystemRemoved(),this.dispatchEventToListeners(Events.FileSystemRemoved,n))}onFileSystemFilesChanged(e){const t={changed:s.call(this,e.data.changed),added:s.call(this,e.data.added),removed:s.call(this,e.data.removed)};function s(e){const t=new Platform.MapUtilities.Multimap;for(const s of e){const e=Common.ParsedURL.ParsedURL.rawPathToUrlString(s);for(const n of this.fileSystemsInternal.keys()){const o=this.fileSystemsInternal.get(n);if(o&&o.isFileExcluded(Common.ParsedURL.ParsedURL.rawPathToEncodedPathString(s)))continue;const r=n.endsWith("/")?n:n+"/";e.startsWith(r)&&t.set(n,e)}}return t}this.dispatchEventToListeners(Events.FileSystemFilesChanged,t)}fileSystems(){return[...this.fileSystemsInternal.values()]}fileSystem(e){return this.fileSystemsInternal.get(e)||null}workspaceFolderExcludePatternSetting(){return this.workspaceFolderExcludePatternSettingInternal}registerCallback(e){const t=++lastRequestId;return this.callbacks.set(t,e),t}registerProgress(e){const t=++lastRequestId;return this.progresses.set(t,e),t}onIndexingTotalWorkCalculated(e){const{requestId:t,totalWork:s}=e.data,n=this.progresses.get(t);n&&n.setTotalWork(s)}onIndexingWorked(e){const{requestId:t,worked:s}=e.data,n=this.progresses.get(t);n&&(n.incrementWorked(s),n.isCanceled()&&(Host.InspectorFrontendHost.InspectorFrontendHostInstance.stopIndexing(t),this.onIndexingDone(e)))}onIndexingDone(e){const{requestId:t}=e.data,s=this.progresses.get(t);s&&(s.done(),this.progresses.delete(t))}onSearchCompleted(e){const{requestId:t,files:s}=e.data,n=this.callbacks.get(t);n&&(n.call(null,s),this.callbacks.delete(t))}}export var Events;!function(e){e.FileSystemAdded="FileSystemAdded",e.FileSystemRemoved="FileSystemRemoved",e.FileSystemFilesChanged="FileSystemFilesChanged",e.ExcludedFolderAdded="ExcludedFolderAdded",e.ExcludedFolderRemoved="ExcludedFolderRemoved"}(Events||(Events={}));let lastRequestId=0;