@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 4.32 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";export class DOMStorage extends Common.ObjectWrapper.ObjectWrapper{model;storageKeyInternal;isLocalStorageInternal;constructor(e,t,o){super(),this.model=e,this.storageKeyInternal=t,this.isLocalStorageInternal=o}static storageId(e,t){return{storageKey:e,isLocalStorage:t}}get id(){return DOMStorage.storageId(this.storageKeyInternal,this.isLocalStorageInternal)}get storageKey(){return this.storageKeyInternal}get isLocalStorage(){return this.isLocalStorageInternal}getItems(){return this.model.agent.invoke_getDOMStorageItems({storageId:this.id}).then((({entries:e})=>e))}setItem(e,t){this.model.agent.invoke_setDOMStorageItem({storageId:this.id,key:e,value:t})}removeItem(e){this.model.agent.invoke_removeDOMStorageItem({storageId:this.id,key:e})}clear(){this.model.agent.invoke_clear({storageId:this.id})}}!function(e){let t;!function(e){e.DOMStorageItemsCleared="DOMStorageItemsCleared",e.DOMStorageItemRemoved="DOMStorageItemRemoved",e.DOMStorageItemAdded="DOMStorageItemAdded",e.DOMStorageItemUpdated="DOMStorageItemUpdated"}(t=e.Events||(e.Events={}))}(DOMStorage||(DOMStorage={}));export class DOMStorageModel extends SDK.SDKModel.SDKModel{storageKeyManagerInternal;storagesInternal;agent;enabled;constructor(e){super(e),this.storageKeyManagerInternal=e.model(SDK.StorageKeyManager.StorageKeyManager),this.storagesInternal={},this.agent=e.domstorageAgent()}get storageKeyManagerForTest(){return this.storageKeyManagerInternal}enable(){if(!this.enabled){if(this.target().registerDOMStorageDispatcher(new DOMStorageDispatcher(this)),this.storageKeyManagerInternal){this.storageKeyManagerInternal.addEventListener(SDK.StorageKeyManager.Events.StorageKeyAdded,this.storageKeyAdded,this),this.storageKeyManagerInternal.addEventListener(SDK.StorageKeyManager.Events.StorageKeyRemoved,this.storageKeyRemoved,this);for(const e of this.storageKeyManagerInternal.storageKeys())this.addStorageKey(e)}this.agent.invoke_enable(),this.enabled=!0}}clearForStorageKey(e){if(this.enabled){for(const t of[!0,!1]){const o=this.storageKey(e,t),r=this.storagesInternal[o];if(!r)return;r.clear()}this.removeStorageKey(e),this.addStorageKey(e)}}storageKeyAdded(e){this.addStorageKey(e.data)}addStorageKey(e){for(const t of[!0,!1]){const o=this.storageKey(e,t);console.assert(!this.storagesInternal[o]);const r=new DOMStorage(this,e,t);this.storagesInternal[o]=r,this.dispatchEventToListeners(Events.DOMStorageAdded,r)}}storageKeyRemoved(e){this.removeStorageKey(e.data)}removeStorageKey(e){for(const t of[!0,!1]){const o=this.storageKey(e,t),r=this.storagesInternal[o];r&&(delete this.storagesInternal[o],this.dispatchEventToListeners(Events.DOMStorageRemoved,r))}}storageKey(e,t){return JSON.stringify(DOMStorage.storageId(e,t))}domStorageItemsCleared(e){const t=this.storageForId(e);t&&t.dispatchEventToListeners(DOMStorage.Events.DOMStorageItemsCleared)}domStorageItemRemoved(e,t){const o=this.storageForId(e);if(!o)return;const r={key:t};o.dispatchEventToListeners(DOMStorage.Events.DOMStorageItemRemoved,r)}domStorageItemAdded(e,t,o){const r=this.storageForId(e);if(!r)return;const a={key:t,value:o};r.dispatchEventToListeners(DOMStorage.Events.DOMStorageItemAdded,a)}domStorageItemUpdated(e,t,o,r){const a=this.storageForId(e);if(!a)return;const s={key:t,oldValue:o,value:r};a.dispatchEventToListeners(DOMStorage.Events.DOMStorageItemUpdated,s)}storageForId(e){return console.assert(Boolean(e.storageKey)),this.storagesInternal[this.storageKey(e.storageKey||"",e.isLocalStorage)]}storages(){const e=[];for(const t in this.storagesInternal)e.push(this.storagesInternal[t]);return e}}SDK.SDKModel.SDKModel.register(DOMStorageModel,{capabilities:SDK.Target.Capability.DOM,autostart:!1});export var Events;!function(e){e.DOMStorageAdded="DOMStorageAdded",e.DOMStorageRemoved="DOMStorageRemoved"}(Events||(Events={}));export class DOMStorageDispatcher{model;constructor(e){this.model=e}domStorageItemsCleared({storageId:e}){this.model.domStorageItemsCleared(e)}domStorageItemRemoved({storageId:e,key:t}){this.model.domStorageItemRemoved(e,t)}domStorageItemAdded({storageId:e,key:t,newValue:o}){this.model.domStorageItemAdded(e,t,o)}domStorageItemUpdated({storageId:e,key:t,oldValue:o,newValue:r}){this.model.domStorageItemUpdated(e,t,o,r)}}