monaco-editor-core 0.55.0-dev-20251008 → 0.55.0-dev-20251010

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.de.js +2 -2
  3. package/esm/nls.messages.es.js +2 -2
  4. package/esm/nls.messages.fr.js +2 -2
  5. package/esm/nls.messages.it.js +2 -2
  6. package/esm/nls.messages.ja.js +2 -2
  7. package/esm/nls.messages.js +1 -1
  8. package/esm/nls.messages.json +1 -1
  9. package/esm/nls.messages.ko.js +2 -2
  10. package/esm/nls.messages.ru.js +2 -2
  11. package/esm/nls.messages.zh-cn.js +2 -2
  12. package/esm/nls.messages.zh-tw.js +2 -2
  13. package/esm/nls.metadata.json +3 -1
  14. package/esm/vs/base/browser/history.js.map +1 -1
  15. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  16. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  17. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  18. package/esm/vs/base/browser/ui/toolbar/toolbar.js +4 -1
  19. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  20. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  21. package/esm/vs/base/common/codiconsLibrary.js +9 -1
  22. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  23. package/esm/vs/base/common/history.js.map +1 -1
  24. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  25. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  26. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +8 -16
  27. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  28. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  29. package/esm/vs/editor/browser/widget/markdownRenderer/browser/editorMarkdownCodeBlockRenderer.js +77 -0
  30. package/esm/vs/editor/browser/widget/markdownRenderer/browser/editorMarkdownCodeBlockRenderer.js.map +1 -0
  31. package/esm/vs/editor/common/config/editorConfiguration.js.map +1 -1
  32. package/esm/vs/editor/common/config/editorZoom.js.map +1 -1
  33. package/esm/vs/editor/common/core/text/abstractText.js +5 -1
  34. package/esm/vs/editor/common/core/text/abstractText.js.map +1 -1
  35. package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
  36. package/esm/vs/editor/common/editorCommon.js.map +1 -1
  37. package/esm/vs/editor/common/languages/language.js.map +1 -1
  38. package/esm/vs/editor/common/languages/languageConfigurationRegistry.js.map +1 -1
  39. package/esm/vs/editor/common/languages.js.map +1 -1
  40. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js +2 -1
  41. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js.map +1 -1
  42. package/esm/vs/editor/common/textModelBracketPairs.js.map +1 -1
  43. package/esm/vs/editor/contrib/find/browser/findController.js +54 -61
  44. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  45. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +5 -8
  46. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  47. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +18 -23
  48. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  49. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  50. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +10 -12
  51. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
  52. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +9 -13
  53. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
  54. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +8 -1
  55. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  56. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  57. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  58. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  59. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  60. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  61. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  62. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  63. package/esm/vs/editor/contrib/message/browser/messageController.js +2 -2
  64. package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
  65. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  66. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  67. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +10 -12
  68. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  69. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  70. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  71. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
  72. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  73. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  74. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  75. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  76. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  77. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  78. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  79. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  80. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  81. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  82. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js.map +1 -1
  83. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  84. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  85. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +18 -24
  86. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  87. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +15 -18
  88. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  89. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  90. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  91. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  92. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  93. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  94. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +7 -6
  95. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
  96. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -32
  97. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  98. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  99. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  100. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  101. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  102. package/esm/vs/editor/editor.api.d.ts +5 -4
  103. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +10 -5
  104. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
  105. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  106. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  107. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  108. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  109. package/esm/vs/platform/actions/browser/actionViewItemService.js.map +1 -1
  110. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +21 -18
  111. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  112. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  113. package/esm/vs/platform/actions/common/actions.js +1 -0
  114. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  115. package/esm/vs/platform/actions/common/menuService.js +2 -2
  116. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  117. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  118. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  119. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  120. package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
  121. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  122. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  123. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  124. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  125. package/esm/vs/platform/keybinding/common/keybinding.js.map +1 -1
  126. package/esm/vs/platform/list/browser/listService.js +27 -27
  127. package/esm/vs/platform/log/common/log.js.map +1 -1
  128. package/esm/vs/platform/markdown/browser/markdownRenderer.js +72 -0
  129. package/esm/vs/platform/markdown/browser/markdownRenderer.js.map +1 -0
  130. package/esm/vs/platform/markers/common/markerService.js +2 -2
  131. package/esm/vs/platform/markers/common/markers.js +6 -6
  132. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  133. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  134. package/esm/vs/platform/quickinput/browser/quickInput.js +29 -19
  135. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  136. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  137. package/esm/vs/platform/quickinput/browser/quickInputController.js +7 -6
  138. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  139. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  140. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  141. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  142. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  143. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  144. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  145. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  146. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  147. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  148. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  149. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  150. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  151. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  152. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  153. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  154. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  155. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  156. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  157. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  158. package/esm/vs/platform/workspace/common/workspaceTrust.js.map +1 -1
  159. package/monaco.d.ts +5 -4
  160. package/package.json +2 -2
  161. package/version.txt +1 -1
  162. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js +0 -111
  163. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +0 -1
@@ -95,11 +95,11 @@ export class AbstractKeybindingService extends Disposable {
95
95
  throw illegalState('impossible');
96
96
  case 1:
97
97
  // TODO@ulugbekna: revise this message and the one below (at least, fix terminology)
98
- this._currentChordStatusMessage = this._notificationService.status(nls.localize(1684, "({0}) was pressed. Waiting for second key of chord...", keypressLabel));
98
+ this._currentChordStatusMessage = this._notificationService.status(nls.localize(1685, "({0}) was pressed. Waiting for second key of chord...", keypressLabel));
99
99
  break;
100
100
  default: {
101
101
  const fullKeypressLabel = this._currentChords.map(({ label }) => label).join(', ');
102
- this._currentChordStatusMessage = this._notificationService.status(nls.localize(1685, "({0}) was pressed. Waiting for next key of chord...", fullKeypressLabel));
102
+ this._currentChordStatusMessage = this._notificationService.status(nls.localize(1686, "({0}) was pressed. Waiting for next key of chord...", fullKeypressLabel));
103
103
  }
104
104
  }
105
105
  this._scheduleLeaveChordMode();
@@ -198,7 +198,7 @@ export class AbstractKeybindingService extends Disposable {
198
198
  if (this.inChordMode) {
199
199
  const currentChordsLabel = this._currentChords.map(({ label }) => label).join(', ');
200
200
  this._log(`+ Leaving multi-chord mode: Nothing bound to "${currentChordsLabel}, ${keypressLabel}".`);
201
- this._notificationService.status(nls.localize(1686, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
201
+ this._notificationService.status(nls.localize(1687, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
202
202
  this._leaveChordMode();
203
203
  shouldPreventDefault = true;
204
204
  }
@@ -217,7 +217,7 @@ export class AbstractKeybindingService extends Disposable {
217
217
  if (this.inChordMode) {
218
218
  const currentChordsLabel = this._currentChords.map(({ label }) => label).join(', ');
219
219
  this._log(`+ Leaving chord mode: Nothing bound to "${currentChordsLabel}, ${keypressLabel}".`);
220
- this._notificationService.status(nls.localize(1687, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
220
+ this._notificationService.status(nls.localize(1688, "The key combination ({0}, {1}) is not a command.", currentChordsLabel, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });
221
221
  this._leaveChordMode();
222
222
  shouldPreventDefault = true;
223
223
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/keybinding/common/keybinding.ts","vs/platform/keybinding/common/keybinding.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAMhG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAc9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAqB,mBAAmB,CAAC,CAAC","file":"keybinding.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../base/common/event.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { IContextKeyService, IContextKeyServiceTarget } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ResolutionResult } from './keybindingResolver.js';\nimport { ResolvedKeybindingItem } from './resolvedKeybindingItem.js';\n\nexport interface IKeyboardEvent {\n\treadonly _standardKeyboardEventBrand: true;\n\n\treadonly ctrlKey: boolean;\n\treadonly shiftKey: boolean;\n\treadonly altKey: boolean;\n\treadonly metaKey: boolean;\n\treadonly keyCode: KeyCode;\n}\n\nexport const IKeybindingService = createDecorator<IKeybindingService>('keybindingService');\n\nexport interface IKeybindingService {\n\treadonly _serviceBrand: undefined;\n\n\tonDidUpdateKeybindings: Event<void>;\n\n\tresolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent` and invoke the command.\n\t */\n\tdispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent`, but do not invoke the command or change inner state.\n\t */\n\tsoftDispatch(keyboardEvent: IKeyboardEvent, target: IContextKeyServiceTarget): ResolutionResult;\n\n\t/**\n\t * Look up the preferred (last defined) keybinding for a command.\n\t * @returns The preferred keybinding or null if the command is not bound.\n\t */\n\tlookupKeybinding(commandId: string, context?: IContextKeyService, enforceContextCheck?: boolean): ResolvedKeybinding | undefined;\n\n\tgetKeybindings(): readonly ResolvedKeybindingItem[];\n\n\t/**\n\t * Will the given key event produce a character that's rendered on screen, e.g. in a\n\t * text box. *Note* that the results of this function can be incorrect.\n\t */\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../base/common/event.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { IContextKeyService, IContextKeyServiceTarget } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ResolutionResult } from './keybindingResolver.js';\nimport { ResolvedKeybindingItem } from './resolvedKeybindingItem.js';\n\nexport interface IKeyboardEvent {\n\treadonly _standardKeyboardEventBrand: true;\n\n\treadonly ctrlKey: boolean;\n\treadonly shiftKey: boolean;\n\treadonly altKey: boolean;\n\treadonly metaKey: boolean;\n\treadonly keyCode: KeyCode;\n}\n\nexport const IKeybindingService = createDecorator<IKeybindingService>('keybindingService');\n\nexport interface IKeybindingService {\n\treadonly _serviceBrand: undefined;\n\n\tonDidUpdateKeybindings: Event<void>;\n\n\tresolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent` and invoke the command.\n\t */\n\tdispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent`, but do not invoke the command or change inner state.\n\t */\n\tsoftDispatch(keyboardEvent: IKeyboardEvent, target: IContextKeyServiceTarget): ResolutionResult;\n\n\t/**\n\t * Look up the preferred (last defined) keybinding for a command.\n\t * @returns The preferred keybinding or null if the command is not bound.\n\t */\n\tlookupKeybinding(commandId: string, context?: IContextKeyService, enforceContextCheck?: boolean): ResolvedKeybinding | undefined;\n\n\tgetKeybindings(): readonly ResolvedKeybindingItem[];\n\n\t/**\n\t * Will the given key event produce a character that's rendered on screen, e.g. in a\n\t * text box. *Note* that the results of this function can be incorrect.\n\t */\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/keybinding/common/keybinding.ts","vs/platform/keybinding/common/keybinding.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAMhG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAc9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAqB,mBAAmB,CAAC,CAAC","file":"keybinding.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../base/common/event.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { IContextKeyService, IContextKeyServiceTarget } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ResolutionResult } from './keybindingResolver.js';\nimport { ResolvedKeybindingItem } from './resolvedKeybindingItem.js';\n\nexport interface IKeyboardEvent {\n\treadonly _standardKeyboardEventBrand: true;\n\n\treadonly ctrlKey: boolean;\n\treadonly shiftKey: boolean;\n\treadonly altKey: boolean;\n\treadonly metaKey: boolean;\n\treadonly keyCode: KeyCode;\n}\n\nexport const IKeybindingService = createDecorator<IKeybindingService>('keybindingService');\n\nexport interface IKeybindingService {\n\treadonly _serviceBrand: undefined;\n\n\treadonly onDidUpdateKeybindings: Event<void>;\n\n\tresolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent` and invoke the command.\n\t */\n\tdispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent`, but do not invoke the command or change inner state.\n\t */\n\tsoftDispatch(keyboardEvent: IKeyboardEvent, target: IContextKeyServiceTarget): ResolutionResult;\n\n\t/**\n\t * Look up the preferred (last defined) keybinding for a command.\n\t * @returns The preferred keybinding or null if the command is not bound.\n\t */\n\tlookupKeybinding(commandId: string, context?: IContextKeyService, enforceContextCheck?: boolean): ResolvedKeybinding | undefined;\n\n\tgetKeybindings(): readonly ResolvedKeybindingItem[];\n\n\t/**\n\t * Will the given key event produce a character that's rendered on screen, e.g. in a\n\t * text box. *Note* that the results of this function can be incorrect.\n\t */\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Event } from '../../../base/common/event.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { IContextKeyService, IContextKeyServiceTarget } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ResolutionResult } from './keybindingResolver.js';\nimport { ResolvedKeybindingItem } from './resolvedKeybindingItem.js';\n\nexport interface IKeyboardEvent {\n\treadonly _standardKeyboardEventBrand: true;\n\n\treadonly ctrlKey: boolean;\n\treadonly shiftKey: boolean;\n\treadonly altKey: boolean;\n\treadonly metaKey: boolean;\n\treadonly keyCode: KeyCode;\n}\n\nexport const IKeybindingService = createDecorator<IKeybindingService>('keybindingService');\n\nexport interface IKeybindingService {\n\treadonly _serviceBrand: undefined;\n\n\treadonly onDidUpdateKeybindings: Event<void>;\n\n\tresolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent` and invoke the command.\n\t */\n\tdispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;\n\n\t/**\n\t * Resolve and dispatch `keyboardEvent`, but do not invoke the command or change inner state.\n\t */\n\tsoftDispatch(keyboardEvent: IKeyboardEvent, target: IContextKeyServiceTarget): ResolutionResult;\n\n\t/**\n\t * Look up the preferred (last defined) keybinding for a command.\n\t * @returns The preferred keybinding or null if the command is not bound.\n\t */\n\tlookupKeybinding(commandId: string, context?: IContextKeyService, enforceContextCheck?: boolean): ResolvedKeybinding | undefined;\n\n\tgetKeybindings(): readonly ResolvedKeybindingItem[];\n\n\t/**\n\t * Will the given key event produce a character that's rendered on screen, e.g. in a\n\t * text box. *Note* that the results of this function can be incorrect.\n\t */\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n"]}
@@ -904,18 +904,18 @@ const configurationRegistry = Registry.as(ConfigurationExtensions.Configuration)
904
904
  configurationRegistry.registerConfiguration({
905
905
  id: 'workbench',
906
906
  order: 7,
907
- title: localize(1688, "Workbench"),
907
+ title: localize(1689, "Workbench"),
908
908
  type: 'object',
909
909
  properties: {
910
910
  [multiSelectModifierSettingKey]: {
911
911
  type: 'string',
912
912
  enum: ['ctrlCmd', 'alt'],
913
913
  markdownEnumDescriptions: [
914
- localize(1689, "Maps to `Control` on Windows and Linux and to `Command` on macOS."),
915
- localize(1690, "Maps to `Alt` on Windows and Linux and to `Option` on macOS.")
914
+ localize(1690, "Maps to `Control` on Windows and Linux and to `Command` on macOS."),
915
+ localize(1691, "Maps to `Alt` on Windows and Linux and to `Option` on macOS.")
916
916
  ],
917
917
  default: 'ctrlCmd',
918
- description: localize(1691, "The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")
918
+ description: localize(1692, "The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")
919
919
 
920
920
 
921
921
 
@@ -927,7 +927,7 @@ configurationRegistry.registerConfiguration({
927
927
  type: 'string',
928
928
  enum: ['singleClick', 'doubleClick'],
929
929
  default: 'singleClick',
930
- description: localize(1692, "Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")
930
+ description: localize(1693, "Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")
931
931
 
932
932
 
933
933
 
@@ -935,96 +935,96 @@ configurationRegistry.registerConfiguration({
935
935
  [horizontalScrollingKey]: {
936
936
  type: 'boolean',
937
937
  default: false,
938
- description: localize(1693, "Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")
938
+ description: localize(1694, "Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")
939
939
  },
940
940
  [scrollByPageKey]: {
941
941
  type: 'boolean',
942
942
  default: false,
943
- description: localize(1694, "Controls whether clicks in the scrollbar scroll page by page.")
943
+ description: localize(1695, "Controls whether clicks in the scrollbar scroll page by page.")
944
944
  },
945
945
  [treeIndentKey]: {
946
946
  type: 'number',
947
947
  default: 8,
948
948
  minimum: 4,
949
949
  maximum: 40,
950
- description: localize(1695, "Controls tree indentation in pixels.")
950
+ description: localize(1696, "Controls tree indentation in pixels.")
951
951
  },
952
952
  [treeRenderIndentGuidesKey]: {
953
953
  type: 'string',
954
954
  enum: ['none', 'onHover', 'always'],
955
955
  default: 'onHover',
956
- description: localize(1696, "Controls whether the tree should render indent guides.")
956
+ description: localize(1697, "Controls whether the tree should render indent guides.")
957
957
  },
958
958
  [listSmoothScrolling]: {
959
959
  type: 'boolean',
960
960
  default: false,
961
- description: localize(1697, "Controls whether lists and trees have smooth scrolling."),
961
+ description: localize(1698, "Controls whether lists and trees have smooth scrolling."),
962
962
  },
963
963
  [mouseWheelScrollSensitivityKey]: {
964
964
  type: 'number',
965
965
  default: 1,
966
- markdownDescription: localize(1698, "A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")
966
+ markdownDescription: localize(1699, "A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")
967
967
  },
968
968
  [fastScrollSensitivityKey]: {
969
969
  type: 'number',
970
970
  default: 5,
971
- markdownDescription: localize(1699, "Scrolling speed multiplier when pressing `Alt`.")
971
+ markdownDescription: localize(1700, "Scrolling speed multiplier when pressing `Alt`.")
972
972
  },
973
973
  [defaultFindModeSettingKey]: {
974
974
  type: 'string',
975
975
  enum: ['highlight', 'filter'],
976
976
  enumDescriptions: [
977
- localize(1700, "Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),
978
- localize(1701, "Filter elements when searching.")
977
+ localize(1701, "Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),
978
+ localize(1702, "Filter elements when searching.")
979
979
  ],
980
980
  default: 'highlight',
981
- description: localize(1702, "Controls the default find mode for lists and trees in the workbench.")
981
+ description: localize(1703, "Controls the default find mode for lists and trees in the workbench.")
982
982
  },
983
983
  [keyboardNavigationSettingKey]: {
984
984
  type: 'string',
985
985
  enum: ['simple', 'highlight', 'filter'],
986
986
  enumDescriptions: [
987
- localize(1703, "Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),
988
- localize(1704, "Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),
989
- localize(1705, "Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")
987
+ localize(1704, "Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),
988
+ localize(1705, "Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),
989
+ localize(1706, "Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")
990
990
  ],
991
991
  default: 'highlight',
992
- description: localize(1706, "Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),
992
+ description: localize(1707, "Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),
993
993
  deprecated: true,
994
- deprecationMessage: localize(1707, "Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")
994
+ deprecationMessage: localize(1708, "Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")
995
995
  },
996
996
  [defaultFindMatchTypeSettingKey]: {
997
997
  type: 'string',
998
998
  enum: ['fuzzy', 'contiguous'],
999
999
  enumDescriptions: [
1000
- localize(1708, "Use fuzzy matching when searching."),
1001
- localize(1709, "Use contiguous matching when searching.")
1000
+ localize(1709, "Use fuzzy matching when searching."),
1001
+ localize(1710, "Use contiguous matching when searching.")
1002
1002
  ],
1003
1003
  default: 'fuzzy',
1004
- description: localize(1710, "Controls the type of matching used when searching lists and trees in the workbench.")
1004
+ description: localize(1711, "Controls the type of matching used when searching lists and trees in the workbench.")
1005
1005
  },
1006
1006
  [treeExpandMode]: {
1007
1007
  type: 'string',
1008
1008
  enum: ['singleClick', 'doubleClick'],
1009
1009
  default: 'singleClick',
1010
- description: localize(1711, "Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable."),
1010
+ description: localize(1712, "Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable."),
1011
1011
  },
1012
1012
  [treeStickyScroll]: {
1013
1013
  type: 'boolean',
1014
1014
  default: true,
1015
- description: localize(1712, "Controls whether sticky scrolling is enabled in trees."),
1015
+ description: localize(1713, "Controls whether sticky scrolling is enabled in trees."),
1016
1016
  },
1017
1017
  [treeStickyScrollMaxElements]: {
1018
1018
  type: 'number',
1019
1019
  minimum: 1,
1020
1020
  default: 7,
1021
- markdownDescription: localize(1713, "Controls the number of sticky elements displayed in the tree when {0} is enabled.", '`#workbench.tree.enableStickyScroll#`'),
1021
+ markdownDescription: localize(1714, "Controls the number of sticky elements displayed in the tree when {0} is enabled.", '`#workbench.tree.enableStickyScroll#`'),
1022
1022
  },
1023
1023
  [typeNavigationModeSettingKey]: {
1024
1024
  type: 'string',
1025
1025
  enum: ['automatic', 'trigger'],
1026
1026
  default: 'automatic',
1027
- markdownDescription: localize(1714, "Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run."),
1027
+ markdownDescription: localize(1715, "Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run."),
1028
1028
  }
1029
1029
  }
1030
1030
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/log/common/log.ts","vs/platform/log/common/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAe,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAW,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAc,YAAY,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAiB,eAAe,CAAC,CAAC;AAE/E,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IACnB,qCAAG,CAAA;IACH,yCAAK,CAAA;IACL,yCAAK,CAAA;IACL,uCAAI,CAAA;IACJ,6CAAO,CAAA;IACP,yCAAK,CAAA;AACN,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAa,QAAQ,CAAC,IAAI,CAAC;AAczD,MAAM,UAAU,MAAM,CAAC,WAAqB,EAAE,YAAsB;IACnE,OAAO,WAAW,KAAK,QAAQ,CAAC,GAAG,IAAI,WAAW,IAAI,YAAY,CAAC;AACpE,CAAC;AA+ED,MAAM,OAAgB,cAAe,SAAQ,UAAU;IAAvD;;QAES,UAAK,GAAa,iBAAiB,CAAC;QAC3B,yBAAoB,GAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAY,CAAC,CAAC;IA8BpG,CAAC;IA7BA,IAAI,mBAAmB,KAAsB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtF,QAAQ,CAAC,KAAe;QACvB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAES,aAAa,CAAC,KAAe;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAES,MAAM,CAAC,KAAe;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CAOD;AAED,MAAM,OAAO,aAAc,SAAQ,cAAc;IAEhD,YAAY,WAAqB,iBAAiB,EAAmB,YAAqB,IAAI;QAC7F,KAAK,EAAE,CAAC;QAD4D,cAAS,GAAT,SAAS,CAAgB;QAE7F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAuB,EAAE,GAAG,IAAe;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAElD,YAA6B,OAA+B;QAC3D,KAAK,EAAE,CAAC;QADoB,YAAO,GAAP,OAAO,CAAwB;QAE3D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAEQ,QAAQ,CAAC,KAAe;QAChC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACxC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACxC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAuB,EAAE,GAAG,IAAe;QAChD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAEQ,OAAO;QACf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CACD;AAID,MAAM,OAAgB,qBAAsB,SAAQ,UAAU;IAU7D,YACW,QAAkB,EACX,QAAa,EAC9B,eAA2C;QAE3C,KAAK,EAAE,CAAC;QAJE,aAAQ,GAAR,QAAQ,CAAU;QACX,aAAQ,GAAR,QAAQ,CAAK;QARd,aAAQ,GAAG,IAAI,WAAW,EAAe,CAAC;QAEnD,wBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAiE,CAAC,CAAC;QAE5G,2BAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAuB,CAAC,CAAC;QAQ5E,IAAI,eAAe,EAAE,CAAC;YACrB,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACzF,CAAC;QACF,CAAC;IACF,CAAC;IAEO,cAAc,CAAC,YAA0B;QAChD,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,YAA0B,EAAE,OAAwB;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,WAAW,GAAgB;YAChC,MAAM;YACN,IAAI,EAAE;gBACL,QAAQ;gBACR,EAAE;gBACF,QAAQ;gBACR,IAAI,EAAE,OAAO,EAAE,IAAI;gBACnB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,KAAK,EAAE,OAAO,EAAE,KAAK;gBACrB,WAAW,EAAE,OAAO,EAAE,WAAW;gBACjC,IAAI,EAAE,OAAO,EAAE,IAAI;aACnB;SACD,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,mEAAmE;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC;IACf,CAAC;IAES,UAAU,CAAC,YAA0B;QAC9C,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/F,CAAC;IAED,aAAa,CAAC,YAA0B,EAAE,UAAmB;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,UAAU,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED,WAAW,CAAC,QAAc;QACzB,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;QACvD,CAAC;QACD,OAAO,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,cAAc,CAAC,QAAyB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAEQ,OAAO;QACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CAGD;AAED,MAAM,OAAO,UAAU;IAAvB;QACU,wBAAmB,GAAoB,IAAI,OAAO,EAAY,CAAC,KAAK,CAAC;IAS/E,CAAC;IARA,QAAQ,CAAC,KAAe,IAAU,CAAC;IACnC,QAAQ,KAAe,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe,IAAU,CAAC;IACpD,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe,IAAU,CAAC;IACpD,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe,IAAU,CAAC;IACnD,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe,IAAU,CAAC;IACnD,KAAK,CAAC,OAAuB,EAAE,GAAG,IAAe,IAAU,CAAC;IAC5D,OAAO,KAAW,CAAC;CACnB;AAED,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC3D;QACC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9C,CAAC;IACkB,cAAc,CAAC,QAAa,EAAE,QAAkB,EAAE,OAAwB;QAC5F,OAAO,IAAI,UAAU,EAAE,CAAC;IACzB,CAAC;CACD;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IAClD,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC;QACpC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC;QACpC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QAClC,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QACrC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC;QACpC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;IACjC,CAAC;AACF,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,aAAa,CAAS,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC","file":"log.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { hash } from '../../../base/common/hash.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { joinPath } from '../../../base/common/resources.js';\nimport { Mutable, isString } from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\n\nexport const ILogService = createDecorator<ILogService>('logService');\nexport const ILoggerService = createDecorator<ILoggerService>('loggerService');\n\nexport enum LogLevel {\n\tOff,\n\tTrace,\n\tDebug,\n\tInfo,\n\tWarning,\n\tError\n}\n\nexport const DEFAULT_LOG_LEVEL: LogLevel = LogLevel.Info;\n\nexport interface ILogger extends IDisposable {\n\tonDidChangeLogLevel: Event<LogLevel>;\n\tgetLevel(): LogLevel;\n\tsetLevel(level: LogLevel): void;\n\n\ttrace(message: string, ...args: unknown[]): void;\n\tdebug(message: string, ...args: unknown[]): void;\n\tinfo(message: string, ...args: unknown[]): void;\n\twarn(message: string, ...args: unknown[]): void;\n\terror(message: string | Error, ...args: unknown[]): void;\n}\n\nexport function canLog(loggerLevel: LogLevel, messageLevel: LogLevel): boolean {\n\treturn loggerLevel !== LogLevel.Off && loggerLevel <= messageLevel;\n}\n\nexport type LoggerGroup = {\n\treadonly id: string;\n\treadonly name: string;\n};\n\nexport interface ILogService extends ILogger {\n\treadonly _serviceBrand: undefined;\n}\n\nexport interface ILoggerOptions {\n\n\t/**\n\t * Id of the logger.\n\t */\n\tid?: string;\n\n\t/**\n\t * Name of the logger.\n\t */\n\tname?: string;\n\n\t/**\n\t * When to log. Set to `always` to log always.\n\t */\n\tlogLevel?: 'always' | LogLevel;\n\n\t/**\n\t * Whether the log should be hidden from the user.\n\t */\n\thidden?: boolean;\n\n\t/**\n\t * Condition which must be true to show this logger\n\t */\n\twhen?: string;\n\n\t/**\n\t * Id of the extension that created this logger.\n\t */\n\textensionId?: string;\n\n\t/**\n\t * Group of the logger.\n\t */\n\tgroup?: LoggerGroup;\n}\n\nexport interface ILoggerResource {\n\treadonly resource: URI;\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly logLevel?: LogLevel;\n\treadonly hidden?: boolean;\n\treadonly when?: string;\n\treadonly extensionId?: string;\n\treadonly group?: LoggerGroup;\n}\n\nexport interface ILoggerService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Creates a logger for the given resource, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(resource: URI, options?: ILoggerOptions): ILogger;\n\n\t/**\n\t * Creates a logger with the given id in the logs folder, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(id: string, options?: Omit<ILoggerOptions, 'id'>): ILogger;\n}\n\nexport abstract class AbstractLogger extends Disposable implements ILogger {\n\n\tprivate level: LogLevel = DEFAULT_LOG_LEVEL;\n\tprivate readonly _onDidChangeLogLevel: Emitter<LogLevel> = this._register(new Emitter<LogLevel>());\n\tget onDidChangeLogLevel(): Event<LogLevel> { return this._onDidChangeLogLevel.event; }\n\n\tsetLevel(level: LogLevel): void {\n\t\tif (this.level !== level) {\n\t\t\tthis.level = level;\n\t\t\tthis._onDidChangeLogLevel.fire(this.level);\n\t\t}\n\t}\n\n\tgetLevel(): LogLevel {\n\t\treturn this.level;\n\t}\n\n\tprotected checkLogLevel(level: LogLevel): boolean {\n\t\treturn canLog(this.level, level);\n\t}\n\n\tprotected canLog(level: LogLevel): boolean {\n\t\tif (this._store.isDisposed) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.checkLogLevel(level);\n\t}\n\n\tabstract trace(message: string, ...args: unknown[]): void;\n\tabstract debug(message: string, ...args: unknown[]): void;\n\tabstract info(message: string, ...args: unknown[]): void;\n\tabstract warn(message: string, ...args: unknown[]): void;\n\tabstract error(message: string | Error, ...args: unknown[]): void;\n}\n\nexport class ConsoleLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(logLevel: LogLevel = DEFAULT_LOG_LEVEL, private readonly useColors: boolean = true) {\n\t\tsuper();\n\t\tthis.setLevel(logLevel);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Trace)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cTRACE', 'color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Debug)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Info)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%c INFO', 'color: #33f', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\twarn(message: string | Error, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Warning)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.warn('%c WARN', 'color: #993', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Error)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.error('%c ERR', 'color: #f33', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.error(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MultiplexLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(private readonly loggers: ReadonlyArray<ILogger>) {\n\t\tsuper();\n\t\tif (loggers.length) {\n\t\t\tthis.setLevel(loggers[0].getLevel());\n\t\t}\n\t}\n\n\toverride setLevel(level: LogLevel): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.setLevel(level);\n\t\t}\n\t\tsuper.setLevel(level);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.trace(message, ...args);\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.debug(message, ...args);\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.info(message, ...args);\n\t\t}\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.warn(message, ...args);\n\t\t}\n\t}\n\n\terror(message: string | Error, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.error(message, ...args);\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.dispose();\n\t\t}\n\t\tsuper.dispose();\n\t}\n}\n\ntype LoggerEntry = { logger: ILogger | undefined; info: Mutable<ILoggerResource> };\n\nexport abstract class AbstractLoggerService extends Disposable implements ILoggerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _loggers = new ResourceMap<LoggerEntry>();\n\n\tprivate _onDidChangeLoggers = this._register(new Emitter<{ added: ILoggerResource[]; removed: ILoggerResource[] }>);\n\n\tprivate _onDidChangeVisibility = this._register(new Emitter<[URI, boolean]>);\n\n\tconstructor(\n\t\tprotected logLevel: LogLevel,\n\t\tprivate readonly logsHome: URI,\n\t\tloggerResources?: Iterable<ILoggerResource>,\n\t) {\n\t\tsuper();\n\t\tif (loggerResources) {\n\t\t\tfor (const loggerResource of loggerResources) {\n\t\t\t\tthis._loggers.set(loggerResource.resource, { logger: undefined, info: loggerResource });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getLoggerEntry(resourceOrId: URI | string): LoggerEntry | undefined {\n\t\tif (isString(resourceOrId)) {\n\t\t\treturn [...this._loggers.values()].find(logger => logger.info.id === resourceOrId);\n\t\t}\n\t\treturn this._loggers.get(resourceOrId);\n\t}\n\n\tcreateLogger(idOrResource: URI | string, options?: ILoggerOptions): ILogger {\n\t\tconst resource = this.toResource(idOrResource);\n\t\tconst id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));\n\t\tlet logger = this._loggers.get(resource)?.logger;\n\t\tconst logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;\n\t\tif (!logger) {\n\t\t\tlogger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });\n\t\t}\n\t\tconst loggerEntry: LoggerEntry = {\n\t\t\tlogger,\n\t\t\tinfo: {\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t\tlogLevel,\n\t\t\t\tname: options?.name,\n\t\t\t\thidden: options?.hidden,\n\t\t\t\tgroup: options?.group,\n\t\t\t\textensionId: options?.extensionId,\n\t\t\t\twhen: options?.when\n\t\t\t}\n\t\t};\n\t\tthis.registerLogger(loggerEntry.info);\n\t\t// TODO: @sandy081 Remove this once registerLogger can take ILogger\n\t\tthis._loggers.set(resource, loggerEntry);\n\t\treturn logger;\n\t}\n\n\tprotected toResource(idOrResource: string | URI): URI {\n\t\treturn isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource}.log`) : idOrResource;\n\t}\n\n\tsetVisibility(resourceOrId: URI | string, visibility: boolean): void {\n\t\tconst logger = this.getLoggerEntry(resourceOrId);\n\t\tif (logger && visibility !== !logger.info.hidden) {\n\t\t\tlogger.info.hidden = !visibility;\n\t\t\tthis._loggers.set(logger.info.resource, logger);\n\t\t\tthis._onDidChangeVisibility.fire([logger.info.resource, visibility]);\n\t\t}\n\t}\n\n\tgetLogLevel(resource?: URI): LogLevel {\n\t\tlet logLevel;\n\t\tif (resource) {\n\t\t\tlogLevel = this._loggers.get(resource)?.info.logLevel;\n\t\t}\n\t\treturn logLevel ?? this.logLevel;\n\t}\n\n\tregisterLogger(resource: ILoggerResource): void {\n\t\tconst existing = this._loggers.get(resource.resource);\n\t\tif (existing) {\n\t\t\tif (existing.info.hidden !== resource.hidden) {\n\t\t\t\tthis.setVisibility(resource.resource, !resource.hidden);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._loggers.set(resource.resource, { info: resource, logger: undefined });\n\t\t\tthis._onDidChangeLoggers.fire({ added: [resource], removed: [] });\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis._loggers.forEach(logger => logger.logger?.dispose());\n\t\tthis._loggers.clear();\n\t\tsuper.dispose();\n\t}\n\n\tprotected abstract doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger;\n}\n\nexport class NullLogger implements ILogger {\n\treadonly onDidChangeLogLevel: Event<LogLevel> = new Emitter<LogLevel>().event;\n\tsetLevel(level: LogLevel): void { }\n\tgetLevel(): LogLevel { return LogLevel.Info; }\n\ttrace(message: string, ...args: unknown[]): void { }\n\tdebug(message: string, ...args: unknown[]): void { }\n\tinfo(message: string, ...args: unknown[]): void { }\n\twarn(message: string, ...args: unknown[]): void { }\n\terror(message: string | Error, ...args: unknown[]): void { }\n\tdispose(): void { }\n}\n\nexport class NullLoggerService extends AbstractLoggerService {\n\tconstructor() {\n\t\tsuper(LogLevel.Off, URI.parse('log:///log'));\n\t}\n\tprotected override doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger {\n\t\treturn new NullLogger();\n\t}\n}\n\nexport function LogLevelToString(logLevel: LogLevel): string {\n\tswitch (logLevel) {\n\t\tcase LogLevel.Trace: return 'trace';\n\t\tcase LogLevel.Debug: return 'debug';\n\t\tcase LogLevel.Info: return 'info';\n\t\tcase LogLevel.Warning: return 'warn';\n\t\tcase LogLevel.Error: return 'error';\n\t\tcase LogLevel.Off: return 'off';\n\t}\n}\n\n// Contexts\nexport const CONTEXT_LOG_LEVEL = new RawContextKey<string>('logLevel', LogLevelToString(LogLevel.Info));\n","\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { hash } from '../../../base/common/hash.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { joinPath } from '../../../base/common/resources.js';\nimport { Mutable, isString } from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\n\nexport const ILogService = createDecorator<ILogService>('logService');\nexport const ILoggerService = createDecorator<ILoggerService>('loggerService');\n\nexport enum LogLevel {\n\tOff,\n\tTrace,\n\tDebug,\n\tInfo,\n\tWarning,\n\tError\n}\n\nexport const DEFAULT_LOG_LEVEL: LogLevel = LogLevel.Info;\n\nexport interface ILogger extends IDisposable {\n\tonDidChangeLogLevel: Event<LogLevel>;\n\tgetLevel(): LogLevel;\n\tsetLevel(level: LogLevel): void;\n\n\ttrace(message: string, ...args: unknown[]): void;\n\tdebug(message: string, ...args: unknown[]): void;\n\tinfo(message: string, ...args: unknown[]): void;\n\twarn(message: string, ...args: unknown[]): void;\n\terror(message: string | Error, ...args: unknown[]): void;\n}\n\nexport function canLog(loggerLevel: LogLevel, messageLevel: LogLevel): boolean {\n\treturn loggerLevel !== LogLevel.Off && loggerLevel <= messageLevel;\n}\n\nexport type LoggerGroup = {\n\treadonly id: string;\n\treadonly name: string;\n};\n\nexport interface ILogService extends ILogger {\n\treadonly _serviceBrand: undefined;\n}\n\nexport interface ILoggerOptions {\n\n\t/**\n\t * Id of the logger.\n\t */\n\tid?: string;\n\n\t/**\n\t * Name of the logger.\n\t */\n\tname?: string;\n\n\t/**\n\t * When to log. Set to `always` to log always.\n\t */\n\tlogLevel?: 'always' | LogLevel;\n\n\t/**\n\t * Whether the log should be hidden from the user.\n\t */\n\thidden?: boolean;\n\n\t/**\n\t * Condition which must be true to show this logger\n\t */\n\twhen?: string;\n\n\t/**\n\t * Id of the extension that created this logger.\n\t */\n\textensionId?: string;\n\n\t/**\n\t * Group of the logger.\n\t */\n\tgroup?: LoggerGroup;\n}\n\nexport interface ILoggerResource {\n\treadonly resource: URI;\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly logLevel?: LogLevel;\n\treadonly hidden?: boolean;\n\treadonly when?: string;\n\treadonly extensionId?: string;\n\treadonly group?: LoggerGroup;\n}\n\nexport interface ILoggerService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Creates a logger for the given resource, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(resource: URI, options?: ILoggerOptions): ILogger;\n\n\t/**\n\t * Creates a logger with the given id in the logs folder, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(id: string, options?: Omit<ILoggerOptions, 'id'>): ILogger;\n}\n\nexport abstract class AbstractLogger extends Disposable implements ILogger {\n\n\tprivate level: LogLevel = DEFAULT_LOG_LEVEL;\n\tprivate readonly _onDidChangeLogLevel: Emitter<LogLevel> = this._register(new Emitter<LogLevel>());\n\tget onDidChangeLogLevel(): Event<LogLevel> { return this._onDidChangeLogLevel.event; }\n\n\tsetLevel(level: LogLevel): void {\n\t\tif (this.level !== level) {\n\t\t\tthis.level = level;\n\t\t\tthis._onDidChangeLogLevel.fire(this.level);\n\t\t}\n\t}\n\n\tgetLevel(): LogLevel {\n\t\treturn this.level;\n\t}\n\n\tprotected checkLogLevel(level: LogLevel): boolean {\n\t\treturn canLog(this.level, level);\n\t}\n\n\tprotected canLog(level: LogLevel): boolean {\n\t\tif (this._store.isDisposed) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.checkLogLevel(level);\n\t}\n\n\tabstract trace(message: string, ...args: unknown[]): void;\n\tabstract debug(message: string, ...args: unknown[]): void;\n\tabstract info(message: string, ...args: unknown[]): void;\n\tabstract warn(message: string, ...args: unknown[]): void;\n\tabstract error(message: string | Error, ...args: unknown[]): void;\n}\n\nexport class ConsoleLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(logLevel: LogLevel = DEFAULT_LOG_LEVEL, private readonly useColors: boolean = true) {\n\t\tsuper();\n\t\tthis.setLevel(logLevel);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Trace)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cTRACE', 'color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Debug)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Info)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%c INFO', 'color: #33f', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\twarn(message: string | Error, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Warning)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.warn('%c WARN', 'color: #993', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Error)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.error('%c ERR', 'color: #f33', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.error(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MultiplexLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(private readonly loggers: ReadonlyArray<ILogger>) {\n\t\tsuper();\n\t\tif (loggers.length) {\n\t\t\tthis.setLevel(loggers[0].getLevel());\n\t\t}\n\t}\n\n\toverride setLevel(level: LogLevel): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.setLevel(level);\n\t\t}\n\t\tsuper.setLevel(level);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.trace(message, ...args);\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.debug(message, ...args);\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.info(message, ...args);\n\t\t}\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.warn(message, ...args);\n\t\t}\n\t}\n\n\terror(message: string | Error, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.error(message, ...args);\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.dispose();\n\t\t}\n\t\tsuper.dispose();\n\t}\n}\n\ntype LoggerEntry = { logger: ILogger | undefined; info: Mutable<ILoggerResource> };\n\nexport abstract class AbstractLoggerService extends Disposable implements ILoggerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _loggers = new ResourceMap<LoggerEntry>();\n\n\tprivate _onDidChangeLoggers = this._register(new Emitter<{ added: ILoggerResource[]; removed: ILoggerResource[] }>);\n\n\tprivate _onDidChangeVisibility = this._register(new Emitter<[URI, boolean]>);\n\n\tconstructor(\n\t\tprotected logLevel: LogLevel,\n\t\tprivate readonly logsHome: URI,\n\t\tloggerResources?: Iterable<ILoggerResource>,\n\t) {\n\t\tsuper();\n\t\tif (loggerResources) {\n\t\t\tfor (const loggerResource of loggerResources) {\n\t\t\t\tthis._loggers.set(loggerResource.resource, { logger: undefined, info: loggerResource });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getLoggerEntry(resourceOrId: URI | string): LoggerEntry | undefined {\n\t\tif (isString(resourceOrId)) {\n\t\t\treturn [...this._loggers.values()].find(logger => logger.info.id === resourceOrId);\n\t\t}\n\t\treturn this._loggers.get(resourceOrId);\n\t}\n\n\tcreateLogger(idOrResource: URI | string, options?: ILoggerOptions): ILogger {\n\t\tconst resource = this.toResource(idOrResource);\n\t\tconst id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));\n\t\tlet logger = this._loggers.get(resource)?.logger;\n\t\tconst logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;\n\t\tif (!logger) {\n\t\t\tlogger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });\n\t\t}\n\t\tconst loggerEntry: LoggerEntry = {\n\t\t\tlogger,\n\t\t\tinfo: {\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t\tlogLevel,\n\t\t\t\tname: options?.name,\n\t\t\t\thidden: options?.hidden,\n\t\t\t\tgroup: options?.group,\n\t\t\t\textensionId: options?.extensionId,\n\t\t\t\twhen: options?.when\n\t\t\t}\n\t\t};\n\t\tthis.registerLogger(loggerEntry.info);\n\t\t// TODO: @sandy081 Remove this once registerLogger can take ILogger\n\t\tthis._loggers.set(resource, loggerEntry);\n\t\treturn logger;\n\t}\n\n\tprotected toResource(idOrResource: string | URI): URI {\n\t\treturn isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource}.log`) : idOrResource;\n\t}\n\n\tsetVisibility(resourceOrId: URI | string, visibility: boolean): void {\n\t\tconst logger = this.getLoggerEntry(resourceOrId);\n\t\tif (logger && visibility !== !logger.info.hidden) {\n\t\t\tlogger.info.hidden = !visibility;\n\t\t\tthis._loggers.set(logger.info.resource, logger);\n\t\t\tthis._onDidChangeVisibility.fire([logger.info.resource, visibility]);\n\t\t}\n\t}\n\n\tgetLogLevel(resource?: URI): LogLevel {\n\t\tlet logLevel;\n\t\tif (resource) {\n\t\t\tlogLevel = this._loggers.get(resource)?.info.logLevel;\n\t\t}\n\t\treturn logLevel ?? this.logLevel;\n\t}\n\n\tregisterLogger(resource: ILoggerResource): void {\n\t\tconst existing = this._loggers.get(resource.resource);\n\t\tif (existing) {\n\t\t\tif (existing.info.hidden !== resource.hidden) {\n\t\t\t\tthis.setVisibility(resource.resource, !resource.hidden);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._loggers.set(resource.resource, { info: resource, logger: undefined });\n\t\t\tthis._onDidChangeLoggers.fire({ added: [resource], removed: [] });\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis._loggers.forEach(logger => logger.logger?.dispose());\n\t\tthis._loggers.clear();\n\t\tsuper.dispose();\n\t}\n\n\tprotected abstract doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger;\n}\n\nexport class NullLogger implements ILogger {\n\treadonly onDidChangeLogLevel: Event<LogLevel> = new Emitter<LogLevel>().event;\n\tsetLevel(level: LogLevel): void { }\n\tgetLevel(): LogLevel { return LogLevel.Info; }\n\ttrace(message: string, ...args: unknown[]): void { }\n\tdebug(message: string, ...args: unknown[]): void { }\n\tinfo(message: string, ...args: unknown[]): void { }\n\twarn(message: string, ...args: unknown[]): void { }\n\terror(message: string | Error, ...args: unknown[]): void { }\n\tdispose(): void { }\n}\n\nexport class NullLoggerService extends AbstractLoggerService {\n\tconstructor() {\n\t\tsuper(LogLevel.Off, URI.parse('log:///log'));\n\t}\n\tprotected override doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger {\n\t\treturn new NullLogger();\n\t}\n}\n\nexport function LogLevelToString(logLevel: LogLevel): string {\n\tswitch (logLevel) {\n\t\tcase LogLevel.Trace: return 'trace';\n\t\tcase LogLevel.Debug: return 'debug';\n\t\tcase LogLevel.Info: return 'info';\n\t\tcase LogLevel.Warning: return 'warn';\n\t\tcase LogLevel.Error: return 'error';\n\t\tcase LogLevel.Off: return 'off';\n\t}\n}\n\n// Contexts\nexport const CONTEXT_LOG_LEVEL = new RawContextKey<string>('logLevel', LogLevelToString(LogLevel.Info));\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/log/common/log.ts","vs/platform/log/common/log.ts"],"names":[],"mappings":"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","file":"log.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { hash } from '../../../base/common/hash.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { joinPath } from '../../../base/common/resources.js';\nimport { Mutable, isString } from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\n\nexport const ILogService = createDecorator<ILogService>('logService');\nexport const ILoggerService = createDecorator<ILoggerService>('loggerService');\n\nexport enum LogLevel {\n\tOff,\n\tTrace,\n\tDebug,\n\tInfo,\n\tWarning,\n\tError\n}\n\nexport const DEFAULT_LOG_LEVEL: LogLevel = LogLevel.Info;\n\nexport interface ILogger extends IDisposable {\n\treadonly onDidChangeLogLevel: Event<LogLevel>;\n\tgetLevel(): LogLevel;\n\tsetLevel(level: LogLevel): void;\n\n\ttrace(message: string, ...args: unknown[]): void;\n\tdebug(message: string, ...args: unknown[]): void;\n\tinfo(message: string, ...args: unknown[]): void;\n\twarn(message: string, ...args: unknown[]): void;\n\terror(message: string | Error, ...args: unknown[]): void;\n}\n\nexport function canLog(loggerLevel: LogLevel, messageLevel: LogLevel): boolean {\n\treturn loggerLevel !== LogLevel.Off && loggerLevel <= messageLevel;\n}\n\nexport type LoggerGroup = {\n\treadonly id: string;\n\treadonly name: string;\n};\n\nexport interface ILogService extends ILogger {\n\treadonly _serviceBrand: undefined;\n}\n\nexport interface ILoggerOptions {\n\n\t/**\n\t * Id of the logger.\n\t */\n\tid?: string;\n\n\t/**\n\t * Name of the logger.\n\t */\n\tname?: string;\n\n\t/**\n\t * When to log. Set to `always` to log always.\n\t */\n\tlogLevel?: 'always' | LogLevel;\n\n\t/**\n\t * Whether the log should be hidden from the user.\n\t */\n\thidden?: boolean;\n\n\t/**\n\t * Condition which must be true to show this logger\n\t */\n\twhen?: string;\n\n\t/**\n\t * Id of the extension that created this logger.\n\t */\n\textensionId?: string;\n\n\t/**\n\t * Group of the logger.\n\t */\n\tgroup?: LoggerGroup;\n}\n\nexport interface ILoggerResource {\n\treadonly resource: URI;\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly logLevel?: LogLevel;\n\treadonly hidden?: boolean;\n\treadonly when?: string;\n\treadonly extensionId?: string;\n\treadonly group?: LoggerGroup;\n}\n\nexport interface ILoggerService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Creates a logger for the given resource, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(resource: URI, options?: ILoggerOptions): ILogger;\n\n\t/**\n\t * Creates a logger with the given id in the logs folder, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(id: string, options?: Omit<ILoggerOptions, 'id'>): ILogger;\n}\n\nexport abstract class AbstractLogger extends Disposable implements ILogger {\n\n\tprivate level: LogLevel = DEFAULT_LOG_LEVEL;\n\tprivate readonly _onDidChangeLogLevel: Emitter<LogLevel> = this._register(new Emitter<LogLevel>());\n\tget onDidChangeLogLevel(): Event<LogLevel> { return this._onDidChangeLogLevel.event; }\n\n\tsetLevel(level: LogLevel): void {\n\t\tif (this.level !== level) {\n\t\t\tthis.level = level;\n\t\t\tthis._onDidChangeLogLevel.fire(this.level);\n\t\t}\n\t}\n\n\tgetLevel(): LogLevel {\n\t\treturn this.level;\n\t}\n\n\tprotected checkLogLevel(level: LogLevel): boolean {\n\t\treturn canLog(this.level, level);\n\t}\n\n\tprotected canLog(level: LogLevel): boolean {\n\t\tif (this._store.isDisposed) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.checkLogLevel(level);\n\t}\n\n\tabstract trace(message: string, ...args: unknown[]): void;\n\tabstract debug(message: string, ...args: unknown[]): void;\n\tabstract info(message: string, ...args: unknown[]): void;\n\tabstract warn(message: string, ...args: unknown[]): void;\n\tabstract error(message: string | Error, ...args: unknown[]): void;\n}\n\nexport class ConsoleLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(logLevel: LogLevel = DEFAULT_LOG_LEVEL, private readonly useColors: boolean = true) {\n\t\tsuper();\n\t\tthis.setLevel(logLevel);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Trace)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cTRACE', 'color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Debug)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Info)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%c INFO', 'color: #33f', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\twarn(message: string | Error, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Warning)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.warn('%c WARN', 'color: #993', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Error)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.error('%c ERR', 'color: #f33', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.error(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MultiplexLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(private readonly loggers: ReadonlyArray<ILogger>) {\n\t\tsuper();\n\t\tif (loggers.length) {\n\t\t\tthis.setLevel(loggers[0].getLevel());\n\t\t}\n\t}\n\n\toverride setLevel(level: LogLevel): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.setLevel(level);\n\t\t}\n\t\tsuper.setLevel(level);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.trace(message, ...args);\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.debug(message, ...args);\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.info(message, ...args);\n\t\t}\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.warn(message, ...args);\n\t\t}\n\t}\n\n\terror(message: string | Error, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.error(message, ...args);\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.dispose();\n\t\t}\n\t\tsuper.dispose();\n\t}\n}\n\ntype LoggerEntry = { logger: ILogger | undefined; info: Mutable<ILoggerResource> };\n\nexport abstract class AbstractLoggerService extends Disposable implements ILoggerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _loggers = new ResourceMap<LoggerEntry>();\n\n\tprivate _onDidChangeLoggers = this._register(new Emitter<{ added: ILoggerResource[]; removed: ILoggerResource[] }>);\n\n\tprivate _onDidChangeVisibility = this._register(new Emitter<[URI, boolean]>);\n\n\tconstructor(\n\t\tprotected logLevel: LogLevel,\n\t\tprivate readonly logsHome: URI,\n\t\tloggerResources?: Iterable<ILoggerResource>,\n\t) {\n\t\tsuper();\n\t\tif (loggerResources) {\n\t\t\tfor (const loggerResource of loggerResources) {\n\t\t\t\tthis._loggers.set(loggerResource.resource, { logger: undefined, info: loggerResource });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getLoggerEntry(resourceOrId: URI | string): LoggerEntry | undefined {\n\t\tif (isString(resourceOrId)) {\n\t\t\treturn [...this._loggers.values()].find(logger => logger.info.id === resourceOrId);\n\t\t}\n\t\treturn this._loggers.get(resourceOrId);\n\t}\n\n\tcreateLogger(idOrResource: URI | string, options?: ILoggerOptions): ILogger {\n\t\tconst resource = this.toResource(idOrResource);\n\t\tconst id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));\n\t\tlet logger = this._loggers.get(resource)?.logger;\n\t\tconst logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;\n\t\tif (!logger) {\n\t\t\tlogger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });\n\t\t}\n\t\tconst loggerEntry: LoggerEntry = {\n\t\t\tlogger,\n\t\t\tinfo: {\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t\tlogLevel,\n\t\t\t\tname: options?.name,\n\t\t\t\thidden: options?.hidden,\n\t\t\t\tgroup: options?.group,\n\t\t\t\textensionId: options?.extensionId,\n\t\t\t\twhen: options?.when\n\t\t\t}\n\t\t};\n\t\tthis.registerLogger(loggerEntry.info);\n\t\t// TODO: @sandy081 Remove this once registerLogger can take ILogger\n\t\tthis._loggers.set(resource, loggerEntry);\n\t\treturn logger;\n\t}\n\n\tprotected toResource(idOrResource: string | URI): URI {\n\t\treturn isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource}.log`) : idOrResource;\n\t}\n\n\tsetVisibility(resourceOrId: URI | string, visibility: boolean): void {\n\t\tconst logger = this.getLoggerEntry(resourceOrId);\n\t\tif (logger && visibility !== !logger.info.hidden) {\n\t\t\tlogger.info.hidden = !visibility;\n\t\t\tthis._loggers.set(logger.info.resource, logger);\n\t\t\tthis._onDidChangeVisibility.fire([logger.info.resource, visibility]);\n\t\t}\n\t}\n\n\tgetLogLevel(resource?: URI): LogLevel {\n\t\tlet logLevel;\n\t\tif (resource) {\n\t\t\tlogLevel = this._loggers.get(resource)?.info.logLevel;\n\t\t}\n\t\treturn logLevel ?? this.logLevel;\n\t}\n\n\tregisterLogger(resource: ILoggerResource): void {\n\t\tconst existing = this._loggers.get(resource.resource);\n\t\tif (existing) {\n\t\t\tif (existing.info.hidden !== resource.hidden) {\n\t\t\t\tthis.setVisibility(resource.resource, !resource.hidden);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._loggers.set(resource.resource, { info: resource, logger: undefined });\n\t\t\tthis._onDidChangeLoggers.fire({ added: [resource], removed: [] });\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis._loggers.forEach(logger => logger.logger?.dispose());\n\t\tthis._loggers.clear();\n\t\tsuper.dispose();\n\t}\n\n\tprotected abstract doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger;\n}\n\nexport class NullLogger implements ILogger {\n\treadonly onDidChangeLogLevel: Event<LogLevel> = new Emitter<LogLevel>().event;\n\tsetLevel(level: LogLevel): void { }\n\tgetLevel(): LogLevel { return LogLevel.Info; }\n\ttrace(message: string, ...args: unknown[]): void { }\n\tdebug(message: string, ...args: unknown[]): void { }\n\tinfo(message: string, ...args: unknown[]): void { }\n\twarn(message: string, ...args: unknown[]): void { }\n\terror(message: string | Error, ...args: unknown[]): void { }\n\tdispose(): void { }\n}\n\nexport class NullLoggerService extends AbstractLoggerService {\n\tconstructor() {\n\t\tsuper(LogLevel.Off, URI.parse('log:///log'));\n\t}\n\tprotected override doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger {\n\t\treturn new NullLogger();\n\t}\n}\n\nexport function LogLevelToString(logLevel: LogLevel): string {\n\tswitch (logLevel) {\n\t\tcase LogLevel.Trace: return 'trace';\n\t\tcase LogLevel.Debug: return 'debug';\n\t\tcase LogLevel.Info: return 'info';\n\t\tcase LogLevel.Warning: return 'warn';\n\t\tcase LogLevel.Error: return 'error';\n\t\tcase LogLevel.Off: return 'off';\n\t}\n}\n\n// Contexts\nexport const CONTEXT_LOG_LEVEL = new RawContextKey<string>('logLevel', LogLevelToString(LogLevel.Info));\n","\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { hash } from '../../../base/common/hash.js';\nimport { Disposable, IDisposable } from '../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { joinPath } from '../../../base/common/resources.js';\nimport { Mutable, isString } from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\n\nexport const ILogService = createDecorator<ILogService>('logService');\nexport const ILoggerService = createDecorator<ILoggerService>('loggerService');\n\nexport enum LogLevel {\n\tOff,\n\tTrace,\n\tDebug,\n\tInfo,\n\tWarning,\n\tError\n}\n\nexport const DEFAULT_LOG_LEVEL: LogLevel = LogLevel.Info;\n\nexport interface ILogger extends IDisposable {\n\treadonly onDidChangeLogLevel: Event<LogLevel>;\n\tgetLevel(): LogLevel;\n\tsetLevel(level: LogLevel): void;\n\n\ttrace(message: string, ...args: unknown[]): void;\n\tdebug(message: string, ...args: unknown[]): void;\n\tinfo(message: string, ...args: unknown[]): void;\n\twarn(message: string, ...args: unknown[]): void;\n\terror(message: string | Error, ...args: unknown[]): void;\n}\n\nexport function canLog(loggerLevel: LogLevel, messageLevel: LogLevel): boolean {\n\treturn loggerLevel !== LogLevel.Off && loggerLevel <= messageLevel;\n}\n\nexport type LoggerGroup = {\n\treadonly id: string;\n\treadonly name: string;\n};\n\nexport interface ILogService extends ILogger {\n\treadonly _serviceBrand: undefined;\n}\n\nexport interface ILoggerOptions {\n\n\t/**\n\t * Id of the logger.\n\t */\n\tid?: string;\n\n\t/**\n\t * Name of the logger.\n\t */\n\tname?: string;\n\n\t/**\n\t * When to log. Set to `always` to log always.\n\t */\n\tlogLevel?: 'always' | LogLevel;\n\n\t/**\n\t * Whether the log should be hidden from the user.\n\t */\n\thidden?: boolean;\n\n\t/**\n\t * Condition which must be true to show this logger\n\t */\n\twhen?: string;\n\n\t/**\n\t * Id of the extension that created this logger.\n\t */\n\textensionId?: string;\n\n\t/**\n\t * Group of the logger.\n\t */\n\tgroup?: LoggerGroup;\n}\n\nexport interface ILoggerResource {\n\treadonly resource: URI;\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly logLevel?: LogLevel;\n\treadonly hidden?: boolean;\n\treadonly when?: string;\n\treadonly extensionId?: string;\n\treadonly group?: LoggerGroup;\n}\n\nexport interface ILoggerService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Creates a logger for the given resource, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(resource: URI, options?: ILoggerOptions): ILogger;\n\n\t/**\n\t * Creates a logger with the given id in the logs folder, or gets one if it already exists.\n\t *\n\t * This will also register the logger with the logger service.\n\t */\n\tcreateLogger(id: string, options?: Omit<ILoggerOptions, 'id'>): ILogger;\n}\n\nexport abstract class AbstractLogger extends Disposable implements ILogger {\n\n\tprivate level: LogLevel = DEFAULT_LOG_LEVEL;\n\tprivate readonly _onDidChangeLogLevel: Emitter<LogLevel> = this._register(new Emitter<LogLevel>());\n\tget onDidChangeLogLevel(): Event<LogLevel> { return this._onDidChangeLogLevel.event; }\n\n\tsetLevel(level: LogLevel): void {\n\t\tif (this.level !== level) {\n\t\t\tthis.level = level;\n\t\t\tthis._onDidChangeLogLevel.fire(this.level);\n\t\t}\n\t}\n\n\tgetLevel(): LogLevel {\n\t\treturn this.level;\n\t}\n\n\tprotected checkLogLevel(level: LogLevel): boolean {\n\t\treturn canLog(this.level, level);\n\t}\n\n\tprotected canLog(level: LogLevel): boolean {\n\t\tif (this._store.isDisposed) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.checkLogLevel(level);\n\t}\n\n\tabstract trace(message: string, ...args: unknown[]): void;\n\tabstract debug(message: string, ...args: unknown[]): void;\n\tabstract info(message: string, ...args: unknown[]): void;\n\tabstract warn(message: string, ...args: unknown[]): void;\n\tabstract error(message: string | Error, ...args: unknown[]): void;\n}\n\nexport class ConsoleLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(logLevel: LogLevel = DEFAULT_LOG_LEVEL, private readonly useColors: boolean = true) {\n\t\tsuper();\n\t\tthis.setLevel(logLevel);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Trace)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cTRACE', 'color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Debug)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Info)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.log('%c INFO', 'color: #33f', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\twarn(message: string | Error, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Warning)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.warn('%c WARN', 'color: #993', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.log(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tif (this.canLog(LogLevel.Error)) {\n\t\t\tif (this.useColors) {\n\t\t\t\tconsole.error('%c ERR', 'color: #f33', message, ...args);\n\t\t\t} else {\n\t\t\t\tconsole.error(message, ...args);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MultiplexLogger extends AbstractLogger implements ILogger {\n\n\tconstructor(private readonly loggers: ReadonlyArray<ILogger>) {\n\t\tsuper();\n\t\tif (loggers.length) {\n\t\t\tthis.setLevel(loggers[0].getLevel());\n\t\t}\n\t}\n\n\toverride setLevel(level: LogLevel): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.setLevel(level);\n\t\t}\n\t\tsuper.setLevel(level);\n\t}\n\n\ttrace(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.trace(message, ...args);\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.debug(message, ...args);\n\t\t}\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.info(message, ...args);\n\t\t}\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.warn(message, ...args);\n\t\t}\n\t}\n\n\terror(message: string | Error, ...args: unknown[]): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.error(message, ...args);\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tfor (const logger of this.loggers) {\n\t\t\tlogger.dispose();\n\t\t}\n\t\tsuper.dispose();\n\t}\n}\n\ntype LoggerEntry = { logger: ILogger | undefined; info: Mutable<ILoggerResource> };\n\nexport abstract class AbstractLoggerService extends Disposable implements ILoggerService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate readonly _loggers = new ResourceMap<LoggerEntry>();\n\n\tprivate _onDidChangeLoggers = this._register(new Emitter<{ added: ILoggerResource[]; removed: ILoggerResource[] }>);\n\n\tprivate _onDidChangeVisibility = this._register(new Emitter<[URI, boolean]>);\n\n\tconstructor(\n\t\tprotected logLevel: LogLevel,\n\t\tprivate readonly logsHome: URI,\n\t\tloggerResources?: Iterable<ILoggerResource>,\n\t) {\n\t\tsuper();\n\t\tif (loggerResources) {\n\t\t\tfor (const loggerResource of loggerResources) {\n\t\t\t\tthis._loggers.set(loggerResource.resource, { logger: undefined, info: loggerResource });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getLoggerEntry(resourceOrId: URI | string): LoggerEntry | undefined {\n\t\tif (isString(resourceOrId)) {\n\t\t\treturn [...this._loggers.values()].find(logger => logger.info.id === resourceOrId);\n\t\t}\n\t\treturn this._loggers.get(resourceOrId);\n\t}\n\n\tcreateLogger(idOrResource: URI | string, options?: ILoggerOptions): ILogger {\n\t\tconst resource = this.toResource(idOrResource);\n\t\tconst id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));\n\t\tlet logger = this._loggers.get(resource)?.logger;\n\t\tconst logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;\n\t\tif (!logger) {\n\t\t\tlogger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });\n\t\t}\n\t\tconst loggerEntry: LoggerEntry = {\n\t\t\tlogger,\n\t\t\tinfo: {\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t\tlogLevel,\n\t\t\t\tname: options?.name,\n\t\t\t\thidden: options?.hidden,\n\t\t\t\tgroup: options?.group,\n\t\t\t\textensionId: options?.extensionId,\n\t\t\t\twhen: options?.when\n\t\t\t}\n\t\t};\n\t\tthis.registerLogger(loggerEntry.info);\n\t\t// TODO: @sandy081 Remove this once registerLogger can take ILogger\n\t\tthis._loggers.set(resource, loggerEntry);\n\t\treturn logger;\n\t}\n\n\tprotected toResource(idOrResource: string | URI): URI {\n\t\treturn isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource}.log`) : idOrResource;\n\t}\n\n\tsetVisibility(resourceOrId: URI | string, visibility: boolean): void {\n\t\tconst logger = this.getLoggerEntry(resourceOrId);\n\t\tif (logger && visibility !== !logger.info.hidden) {\n\t\t\tlogger.info.hidden = !visibility;\n\t\t\tthis._loggers.set(logger.info.resource, logger);\n\t\t\tthis._onDidChangeVisibility.fire([logger.info.resource, visibility]);\n\t\t}\n\t}\n\n\tgetLogLevel(resource?: URI): LogLevel {\n\t\tlet logLevel;\n\t\tif (resource) {\n\t\t\tlogLevel = this._loggers.get(resource)?.info.logLevel;\n\t\t}\n\t\treturn logLevel ?? this.logLevel;\n\t}\n\n\tregisterLogger(resource: ILoggerResource): void {\n\t\tconst existing = this._loggers.get(resource.resource);\n\t\tif (existing) {\n\t\t\tif (existing.info.hidden !== resource.hidden) {\n\t\t\t\tthis.setVisibility(resource.resource, !resource.hidden);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._loggers.set(resource.resource, { info: resource, logger: undefined });\n\t\t\tthis._onDidChangeLoggers.fire({ added: [resource], removed: [] });\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis._loggers.forEach(logger => logger.logger?.dispose());\n\t\tthis._loggers.clear();\n\t\tsuper.dispose();\n\t}\n\n\tprotected abstract doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger;\n}\n\nexport class NullLogger implements ILogger {\n\treadonly onDidChangeLogLevel: Event<LogLevel> = new Emitter<LogLevel>().event;\n\tsetLevel(level: LogLevel): void { }\n\tgetLevel(): LogLevel { return LogLevel.Info; }\n\ttrace(message: string, ...args: unknown[]): void { }\n\tdebug(message: string, ...args: unknown[]): void { }\n\tinfo(message: string, ...args: unknown[]): void { }\n\twarn(message: string, ...args: unknown[]): void { }\n\terror(message: string | Error, ...args: unknown[]): void { }\n\tdispose(): void { }\n}\n\nexport class NullLoggerService extends AbstractLoggerService {\n\tconstructor() {\n\t\tsuper(LogLevel.Off, URI.parse('log:///log'));\n\t}\n\tprotected override doCreateLogger(resource: URI, logLevel: LogLevel, options?: ILoggerOptions): ILogger {\n\t\treturn new NullLogger();\n\t}\n}\n\nexport function LogLevelToString(logLevel: LogLevel): string {\n\tswitch (logLevel) {\n\t\tcase LogLevel.Trace: return 'trace';\n\t\tcase LogLevel.Debug: return 'debug';\n\t\tcase LogLevel.Info: return 'info';\n\t\tcase LogLevel.Warning: return 'warn';\n\t\tcase LogLevel.Error: return 'error';\n\t\tcase LogLevel.Off: return 'off';\n\t}\n}\n\n// Contexts\nexport const CONTEXT_LOG_LEVEL = new RawContextKey<string>('logLevel', LogLevelToString(LogLevel.Info));\n"]}
@@ -0,0 +1,72 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ import { renderMarkdown } from '../../../base/browser/markdownRenderer.js';
15
+ import { onUnexpectedError } from '../../../base/common/errors.js';
16
+ import { registerSingleton } from '../../instantiation/common/extensions.js';
17
+ import { createDecorator } from '../../instantiation/common/instantiation.js';
18
+ import { IOpenerService } from '../../opener/common/opener.js';
19
+ export const IMarkdownRendererService = createDecorator('markdownRendererService');
20
+ let MarkdownRendererService = class MarkdownRendererService {
21
+ constructor(_openerService) {
22
+ this._openerService = _openerService;
23
+ }
24
+ render(markdown, options, outElement) {
25
+ const resolvedOptions = { ...options };
26
+ if (!resolvedOptions.actionHandler) {
27
+ resolvedOptions.actionHandler = (link, mdStr) => {
28
+ return openLinkFromMarkdown(this._openerService, link, mdStr.isTrusted);
29
+ };
30
+ }
31
+ if (!resolvedOptions.codeBlockRenderer) {
32
+ resolvedOptions.codeBlockRenderer = (alias, value) => {
33
+ return this._defaultCodeBlockRenderer?.renderCodeBlock(alias, value, resolvedOptions ?? {}) ?? Promise.resolve(document.createElement('span'));
34
+ };
35
+ }
36
+ const rendered = renderMarkdown(markdown, resolvedOptions, outElement);
37
+ rendered.element.classList.add('rendered-markdown');
38
+ return rendered;
39
+ }
40
+ setDefaultCodeBlockRenderer(renderer) {
41
+ this._defaultCodeBlockRenderer = renderer;
42
+ }
43
+ };
44
+ MarkdownRendererService = __decorate([
45
+ __param(0, IOpenerService)
46
+ ], MarkdownRendererService);
47
+ export { MarkdownRendererService };
48
+ export async function openLinkFromMarkdown(openerService, link, isTrusted, skipValidation) {
49
+ try {
50
+ return await openerService.open(link, {
51
+ fromUserGesture: true,
52
+ allowContributedOpeners: true,
53
+ allowCommands: toAllowCommandsOption(isTrusted),
54
+ skipValidation
55
+ });
56
+ }
57
+ catch (e) {
58
+ onUnexpectedError(e);
59
+ return false;
60
+ }
61
+ }
62
+ function toAllowCommandsOption(isTrusted) {
63
+ if (isTrusted === true) {
64
+ return true; // Allow all commands
65
+ }
66
+ if (isTrusted && Array.isArray(isTrusted.enabledCommands)) {
67
+ return isTrusted.enabledCommands; // Allow subset of commands
68
+ }
69
+ return false; // Block commands
70
+ }
71
+ registerSingleton(IMarkdownRendererService, MarkdownRendererService, 1 /* InstantiationType.Delayed */);
72
+ //# sourceMappingURL=markdownRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/markdown/browser/markdownRenderer.ts","vs/platform/markdown/browser/markdownRenderer.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,EAA4C,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACrH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAqB,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAwB/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAA2B,yBAAyB,CAAC,CAAC;AAmBtG,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAKnC,YACkC,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAC5D,CAAC;IAEL,MAAM,CAAC,QAAyB,EAAE,OAA+D,EAAE,UAAwB;QAC1H,MAAM,eAAe,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAEvC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YACpC,eAAe,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC/C,OAAO,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACzE,CAAC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;YACxC,eAAe,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpD,OAAO,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAChJ,CAAC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACvE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,2BAA2B,CAAC,QAAoC;QAC/D,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC;IAC3C,CAAC;CACD,CAAA;AAhCY,uBAAuB;IAMjC,WAAA,cAAc,CAAA;GANJ,uBAAuB,CAgCnC;;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,aAA6B,EAAE,IAAY,EAAE,SAA6D,EAAE,cAAwB;IAC9K,IAAI,CAAC;QACJ,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;YACrC,eAAe,EAAE,IAAI;YACrB,uBAAuB,EAAE,IAAI;YAC7B,aAAa,EAAE,qBAAqB,CAAC,SAAS,CAAC;YAC/C,cAAc;SACd,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA6D;IAC3F,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,qBAAqB;IACnC,CAAC;IAED,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC,2BAA2B;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,iBAAiB;AAChC,CAAC;AAED,iBAAiB,CAAC,wBAAwB,EAAE,uBAAuB,oCAA4B,CAAC","file":"markdownRenderer.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IRenderedMarkdown, MarkdownRenderOptions, renderMarkdown } from '../../../base/browser/markdownRenderer.js';\nimport { onUnexpectedError } from '../../../base/common/errors.js';\nimport { IMarkdownString, MarkdownStringTrustedOptions } from '../../../base/common/htmlContent.js';\nimport { InstantiationType, registerSingleton } from '../../instantiation/common/extensions.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../opener/common/opener.js';\n\n/**\n * Renders markdown to HTML.\n *\n * This interface allows a upper level component to pass a custom markdown renderer to sub-components.\n *\n * If you want to render markdown content in a standard way, prefer using the {@linkcode IMarkdownRendererService}.\n */\nexport interface IMarkdownRenderer {\n}\n\nexport interface IMarkdownRendererExtraOptions {\n\t/**\n\t * The context in which the markdown is being rendered.\n\t */\n\treadonly context?: unknown;\n}\n\nexport interface IMarkdownCodeBlockRenderer {\n\trenderCodeBlock(languageAlias: string | undefined, value: string, options: IMarkdownRendererExtraOptions): Promise<HTMLElement>;\n}\n\n\nexport const IMarkdownRendererService = createDecorator<IMarkdownRendererService>('markdownRendererService');\n\n/**\n * Service that renders markdown content in a standard manner.\n *\n * Unlike the lower-level {@linkcode renderMarkdown} function, this includes built-in support for features such as syntax\n * highlighting of code blocks and link handling.\n *\n * This service should be preferred for rendering markdown in most cases.\n */\nexport interface IMarkdownRendererService extends IMarkdownRenderer {\n\treadonly _serviceBrand: undefined;\n\n\trender(markdown: IMarkdownString, options?: MarkdownRenderOptions & IMarkdownRendererExtraOptions, outElement?: HTMLElement): IRenderedMarkdown;\n\n\tsetDefaultCodeBlockRenderer(renderer: IMarkdownCodeBlockRenderer): void;\n}\n\n\nexport class MarkdownRendererService implements IMarkdownRendererService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate _defaultCodeBlockRenderer: IMarkdownCodeBlockRenderer | undefined;\n\n\tconstructor(\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t) { }\n\n\trender(markdown: IMarkdownString, options?: MarkdownRenderOptions & IMarkdownRendererExtraOptions, outElement?: HTMLElement): IRenderedMarkdown {\n\t\tconst resolvedOptions = { ...options };\n\n\t\tif (!resolvedOptions.actionHandler) {\n\t\t\tresolvedOptions.actionHandler = (link, mdStr) => {\n\t\t\t\treturn openLinkFromMarkdown(this._openerService, link, mdStr.isTrusted);\n\t\t\t};\n\t\t}\n\n\t\tif (!resolvedOptions.codeBlockRenderer) {\n\t\t\tresolvedOptions.codeBlockRenderer = (alias, value) => {\n\t\t\t\treturn this._defaultCodeBlockRenderer?.renderCodeBlock(alias, value, resolvedOptions ?? {}) ?? Promise.resolve(document.createElement('span'));\n\t\t\t};\n\t\t}\n\n\t\tconst rendered = renderMarkdown(markdown, resolvedOptions, outElement);\n\t\trendered.element.classList.add('rendered-markdown');\n\t\treturn rendered;\n\t}\n\n\tsetDefaultCodeBlockRenderer(renderer: IMarkdownCodeBlockRenderer): void {\n\t\tthis._defaultCodeBlockRenderer = renderer;\n\t}\n}\n\nexport async function openLinkFromMarkdown(openerService: IOpenerService, link: string, isTrusted: boolean | MarkdownStringTrustedOptions | undefined, skipValidation?: boolean): Promise<boolean> {\n\ttry {\n\t\treturn await openerService.open(link, {\n\t\t\tfromUserGesture: true,\n\t\t\tallowContributedOpeners: true,\n\t\t\tallowCommands: toAllowCommandsOption(isTrusted),\n\t\t\tskipValidation\n\t\t});\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn false;\n\t}\n}\n\nfunction toAllowCommandsOption(isTrusted: boolean | MarkdownStringTrustedOptions | undefined): boolean | readonly string[] {\n\tif (isTrusted === true) {\n\t\treturn true; // Allow all commands\n\t}\n\n\tif (isTrusted && Array.isArray(isTrusted.enabledCommands)) {\n\t\treturn isTrusted.enabledCommands; // Allow subset of commands\n\t}\n\n\treturn false; // Block commands\n}\n\nregisterSingleton(IMarkdownRendererService, MarkdownRendererService, InstantiationType.Delayed);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IRenderedMarkdown, MarkdownRenderOptions, renderMarkdown } from '../../../base/browser/markdownRenderer.js';\nimport { onUnexpectedError } from '../../../base/common/errors.js';\nimport { IMarkdownString, MarkdownStringTrustedOptions } from '../../../base/common/htmlContent.js';\nimport { InstantiationType, registerSingleton } from '../../instantiation/common/extensions.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../opener/common/opener.js';\n\n/**\n * Renders markdown to HTML.\n *\n * This interface allows a upper level component to pass a custom markdown renderer to sub-components.\n *\n * If you want to render markdown content in a standard way, prefer using the {@linkcode IMarkdownRendererService}.\n */\nexport interface IMarkdownRenderer {\n}\n\nexport interface IMarkdownRendererExtraOptions {\n\t/**\n\t * The context in which the markdown is being rendered.\n\t */\n\treadonly context?: unknown;\n}\n\nexport interface IMarkdownCodeBlockRenderer {\n\trenderCodeBlock(languageAlias: string | undefined, value: string, options: IMarkdownRendererExtraOptions): Promise<HTMLElement>;\n}\n\n\nexport const IMarkdownRendererService = createDecorator<IMarkdownRendererService>('markdownRendererService');\n\n/**\n * Service that renders markdown content in a standard manner.\n *\n * Unlike the lower-level {@linkcode renderMarkdown} function, this includes built-in support for features such as syntax\n * highlighting of code blocks and link handling.\n *\n * This service should be preferred for rendering markdown in most cases.\n */\nexport interface IMarkdownRendererService extends IMarkdownRenderer {\n\treadonly _serviceBrand: undefined;\n\n\trender(markdown: IMarkdownString, options?: MarkdownRenderOptions & IMarkdownRendererExtraOptions, outElement?: HTMLElement): IRenderedMarkdown;\n\n\tsetDefaultCodeBlockRenderer(renderer: IMarkdownCodeBlockRenderer): void;\n}\n\n\nexport class MarkdownRendererService implements IMarkdownRendererService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate _defaultCodeBlockRenderer: IMarkdownCodeBlockRenderer | undefined;\n\n\tconstructor(\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t) { }\n\n\trender(markdown: IMarkdownString, options?: MarkdownRenderOptions & IMarkdownRendererExtraOptions, outElement?: HTMLElement): IRenderedMarkdown {\n\t\tconst resolvedOptions = { ...options };\n\n\t\tif (!resolvedOptions.actionHandler) {\n\t\t\tresolvedOptions.actionHandler = (link, mdStr) => {\n\t\t\t\treturn openLinkFromMarkdown(this._openerService, link, mdStr.isTrusted);\n\t\t\t};\n\t\t}\n\n\t\tif (!resolvedOptions.codeBlockRenderer) {\n\t\t\tresolvedOptions.codeBlockRenderer = (alias, value) => {\n\t\t\t\treturn this._defaultCodeBlockRenderer?.renderCodeBlock(alias, value, resolvedOptions ?? {}) ?? Promise.resolve(document.createElement('span'));\n\t\t\t};\n\t\t}\n\n\t\tconst rendered = renderMarkdown(markdown, resolvedOptions, outElement);\n\t\trendered.element.classList.add('rendered-markdown');\n\t\treturn rendered;\n\t}\n\n\tsetDefaultCodeBlockRenderer(renderer: IMarkdownCodeBlockRenderer): void {\n\t\tthis._defaultCodeBlockRenderer = renderer;\n\t}\n}\n\nexport async function openLinkFromMarkdown(openerService: IOpenerService, link: string, isTrusted: boolean | MarkdownStringTrustedOptions | undefined, skipValidation?: boolean): Promise<boolean> {\n\ttry {\n\t\treturn await openerService.open(link, {\n\t\t\tfromUserGesture: true,\n\t\t\tallowContributedOpeners: true,\n\t\t\tallowCommands: toAllowCommandsOption(isTrusted),\n\t\t\tskipValidation\n\t\t});\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn false;\n\t}\n}\n\nfunction toAllowCommandsOption(isTrusted: boolean | MarkdownStringTrustedOptions | undefined): boolean | readonly string[] {\n\tif (isTrusted === true) {\n\t\treturn true; // Allow all commands\n\t}\n\n\tif (isTrusted && Array.isArray(isTrusted.enabledCommands)) {\n\t\treturn isTrusted.enabledCommands; // Allow subset of commands\n\t}\n\n\treturn false; // Block commands\n}\n\nregisterSingleton(IMarkdownRendererService, MarkdownRendererService, InstantiationType.Delayed);\n"]}
@@ -239,8 +239,8 @@ export class MarkerService {
239
239
  */
240
240
  _createFilteredMarker(resource, reasons) {
241
241
  const message = reasons.length === 1
242
- ? localize(1721, "Problems are paused because: \"{0}\"", reasons[0])
243
- : localize(1722, "Problems are paused because: \"{0}\" and {1} more", reasons[0], reasons.length - 1);
242
+ ? localize(1722, "Problems are paused because: \"{0}\"", reasons[0])
243
+ : localize(1723, "Problems are paused because: \"{0}\" and {1} more", reasons[0], reasons.length - 1);
244
244
  return {
245
245
  owner: 'markersFilter',
246
246
  resource,
@@ -18,17 +18,17 @@ export var MarkerSeverity;
18
18
  }
19
19
  MarkerSeverity.compare = compare;
20
20
  const _displayStrings = Object.create(null);
21
- _displayStrings[MarkerSeverity.Error] = localize(1715, "Error");
22
- _displayStrings[MarkerSeverity.Warning] = localize(1716, "Warning");
23
- _displayStrings[MarkerSeverity.Info] = localize(1717, "Info");
21
+ _displayStrings[MarkerSeverity.Error] = localize(1716, "Error");
22
+ _displayStrings[MarkerSeverity.Warning] = localize(1717, "Warning");
23
+ _displayStrings[MarkerSeverity.Info] = localize(1718, "Info");
24
24
  function toString(a) {
25
25
  return _displayStrings[a] || '';
26
26
  }
27
27
  MarkerSeverity.toString = toString;
28
28
  const _displayStringsPlural = Object.create(null);
29
- _displayStringsPlural[MarkerSeverity.Error] = localize(1718, "Errors");
30
- _displayStringsPlural[MarkerSeverity.Warning] = localize(1719, "Warnings");
31
- _displayStringsPlural[MarkerSeverity.Info] = localize(1720, "Infos");
29
+ _displayStringsPlural[MarkerSeverity.Error] = localize(1719, "Errors");
30
+ _displayStringsPlural[MarkerSeverity.Warning] = localize(1720, "Warnings");
31
+ _displayStringsPlural[MarkerSeverity.Info] = localize(1721, "Infos");
32
32
  function toStringPlural(a) {
33
33
  return _displayStringsPlural[a] || '';
34
34
  }
@@ -161,22 +161,22 @@ let AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvi
161
161
  const commandPick = filteredCommandPicks[i];
162
162
  // Separator: recently used
163
163
  if (i === 0 && this.commandsHistory.peek(commandPick.commandId)) {
164
- commandPicks.push({ type: 'separator', label: localize(1723, "recently used") });
164
+ commandPicks.push({ type: 'separator', label: localize(1724, "recently used") });
165
165
  addOtherSeparator = true;
166
166
  }
167
167
  if (addSuggestedSeparator && commandPick.tfIdfScore !== undefined) {
168
- commandPicks.push({ type: 'separator', label: localize(1724, "similar commands") });
168
+ commandPicks.push({ type: 'separator', label: localize(1725, "similar commands") });
169
169
  addSuggestedSeparator = false;
170
170
  }
171
171
  // Separator: commonly used
172
172
  if (addCommonlyUsedSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && this.options.suggestedCommandIds?.has(commandPick.commandId)) {
173
- commandPicks.push({ type: 'separator', label: localize(1725, "commonly used") });
173
+ commandPicks.push({ type: 'separator', label: localize(1726, "commonly used") });
174
174
  addOtherSeparator = true;
175
175
  addCommonlyUsedSeparator = false;
176
176
  }
177
177
  // Separator: other commands
178
178
  if (addOtherSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && !this.options.suggestedCommandIds?.has(commandPick.commandId)) {
179
- commandPicks.push({ type: 'separator', label: localize(1726, "other commands") });
179
+ commandPicks.push({ type: 'separator', label: localize(1727, "other commands") });
180
180
  addOtherSeparator = false;
181
181
  }
182
182
  // Command
@@ -196,7 +196,7 @@ let AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvi
196
196
  // Basically, if we haven't already added a separator, we add one before the additional picks so long
197
197
  // as one hasn't been added to the start of the array.
198
198
  if (addSuggestedSeparator && commandPicks[0]?.type !== 'separator') {
199
- commandPicks.unshift({ type: 'separator', label: localize(1727, "similar commands") });
199
+ commandPicks.unshift({ type: 'separator', label: localize(1728, "similar commands") });
200
200
  }
201
201
  return commandPicks;
202
202
  })()
@@ -208,7 +208,7 @@ let AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvi
208
208
  }
209
209
  const keybinding = this.keybindingService.lookupKeybinding(commandPick.commandId);
210
210
  const ariaLabel = keybinding ?
211
- localize(1728, "{0}, {1}", commandPick.label, keybinding.getAriaLabel()) :
211
+ localize(1729, "{0}, {1}", commandPick.label, keybinding.getAriaLabel()) :
212
212
  commandPick.label;
213
213
  return {
214
214
  ...commandPick,
@@ -231,7 +231,7 @@ let AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvi
231
231
  }
232
232
  catch (error) {
233
233
  if (!isCancellationError(error)) {
234
- this.dialogService.error(localize(1729, "Command '{0}' resulted in an error", commandPick.label), toErrorMessage(error));
234
+ this.dialogService.error(localize(1730, "Command '{0}' resulted in an error", commandPick.label), toErrorMessage(error));
235
235
  }
236
236
  }
237
237
  }
@@ -62,7 +62,7 @@ let HelpQuickAccessProvider = class HelpQuickAccessProvider {
62
62
  prefix,
63
63
  label,
64
64
  keybinding: helpEntry.commandId ? this.keybindingService.lookupKeybinding(helpEntry.commandId) : undefined,
65
- ariaLabel: localize(1730, "{0}, {1}", label, helpEntry.description),
65
+ ariaLabel: localize(1731, "{0}, {1}", label, helpEntry.description),
66
66
  description: helpEntry.description
67
67
  };
68
68
  });