@@ -16,10 +16,11 @@ import getSnippetServiceOverride from 'vscode/service-override/snippets'
1616import getQuickAccessServiceOverride from 'vscode/service-override/quickaccess'
1717import getOutputServiceOverride from 'vscode/service-override/output'
1818import getTerminalServiceOverride from 'vscode/service-override/terminal'
19- import getSearchAccessServiceOverride from 'vscode/service-override/search'
20- import getMarkersAccessServiceOverride from 'vscode/service-override/markers'
21- import getAccessibilityAccessServiceOverride from 'vscode/service-override/accessibility'
19+ import getSearchServiceOverride from 'vscode/service-override/search'
20+ import getMarkersServiceOverride from 'vscode/service-override/markers'
21+ import getAccessibilityServiceOverride from 'vscode/service-override/accessibility'
2222import getLanguageDetectionWorkerServiceOverride from 'vscode/service-override/languageDetectionWorker'
23+ import getStorageServiceOverride , { IStorageItemsChangeEvent , StorageScope } from 'vscode/service-override/storage'
2324import getExtensionServiceOverride from 'vscode/service-override/extensions'
2425import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker'
2526import TextMateWorker from 'vscode/workers/textMate.worker?worker'
@@ -49,6 +50,8 @@ window.MonacoEnvironment = {
4950 }
5051}
5152
53+ const onStorageChange = new monaco . Emitter < IStorageItemsChangeEvent > ( )
54+
5255// Override services
5356await initializeMonacoService ( {
5457 ...getExtensionServiceOverride ( toWorkerConfig ( ExtensionHostWorker ) ) ,
@@ -71,13 +74,33 @@ await initializeMonacoService({
7174 } ) ,
7275 ...getOutputServiceOverride ( ) ,
7376 ...getTerminalServiceOverride ( new TerminalBackend ( ) ) ,
74- ...getSearchAccessServiceOverride ( ) ,
75- ...getMarkersAccessServiceOverride ( ) ,
76- ...getAccessibilityAccessServiceOverride ( ) ,
77- ...getLanguageDetectionWorkerServiceOverride ( )
77+ ...getSearchServiceOverride ( ) ,
78+ ...getMarkersServiceOverride ( ) ,
79+ ...getAccessibilityServiceOverride ( ) ,
80+ ...getLanguageDetectionWorkerServiceOverride ( ) ,
81+ ...getStorageServiceOverride ( {
82+ read ( scope ) {
83+ return new Map ( Object . entries ( JSON . parse ( localStorage . getItem ( `storage-${ scope } ` ) ?? '{}' ) ) )
84+ } ,
85+ async write ( scope , data ) {
86+ localStorage . setItem ( `storage-${ scope } ` , JSON . stringify ( Object . fromEntries ( data . entries ( ) ) ) )
87+ } ,
88+ onDidChange : onStorageChange . event
89+ } )
7890} )
7991StandaloneServices . get ( ILogService ) . setLevel ( LogLevel . Off )
8092
93+ export function clearStorage ( ) : void {
94+ const allKeys = new Set ( [ StorageScope . APPLICATION , StorageScope . PROFILE , StorageScope . WORKSPACE ] . flatMap ( scope => Object . keys ( JSON . parse ( localStorage . getItem ( `storage-${ scope } ` ) ?? '{}' ) ) ) )
95+ localStorage . removeItem ( `storage-${ StorageScope . APPLICATION } ` )
96+ localStorage . removeItem ( `storage-${ StorageScope . PROFILE } ` )
97+ localStorage . removeItem ( `storage-${ StorageScope . WORKSPACE } ` )
98+ onStorageChange . fire ( {
99+ deleted : allKeys ,
100+ changed : new Map ( )
101+ } )
102+ }
103+
81104await initializeVscodeExtensions ( )
82105
83106renderSidebarPart ( document . querySelector < HTMLDivElement > ( '#sidebar' ) ! )
0 commit comments