@codingame/monaco-vscode-api 4.0.0 → 4.1.0

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 (909) hide show
  1. package/README.md +2 -0
  2. package/l10n.d.ts +5 -2
  3. package/l10n.js +14 -2
  4. package/missing-services.js +6 -7
  5. package/override/vs/platform/userDataSync/common/extensionsSync.js +4 -0
  6. package/override/vs/platform/userDataSync/common/globalStateSync.js +5 -0
  7. package/package.json +8 -8
  8. package/services.d.ts +2 -0
  9. package/services.js +2 -0
  10. package/vscode/src/vs/base/browser/hash.js +15 -0
  11. package/vscode/src/vs/base/browser/ui/icons/iconSelectBox.css.js +4 -0
  12. package/vscode/src/vs/base/browser/ui/icons/iconSelectBox.js +246 -0
  13. package/vscode/src/vs/base/common/amd.js +101 -0
  14. package/vscode/src/vs/base/common/console.js +60 -0
  15. package/vscode/src/vs/base/common/objects.js +1 -1
  16. package/vscode/src/vs/base/common/paging.js +116 -0
  17. package/vscode/src/vs/base/common/parsers.js +43 -0
  18. package/vscode/src/vs/base/common/processes.js +25 -0
  19. package/vscode/src/vs/base/parts/request/browser/request.js +60 -0
  20. package/vscode/src/vs/editor/browser/coreCommands.js +1 -1
  21. package/vscode/src/vs/editor/common/services/modelUndoRedoParticipant.js +56 -0
  22. package/vscode/src/vs/editor/common/services/textResourceConfigurationService.js +116 -0
  23. package/vscode/src/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +23 -0
  24. package/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.js +71 -0
  25. package/vscode/src/vs/platform/download/common/downloadIpc.js +16 -0
  26. package/vscode/src/vs/platform/download/common/downloadService.js +31 -0
  27. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +748 -0
  28. package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +852 -0
  29. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +495 -0
  30. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.js +120 -0
  31. package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +65 -0
  32. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +56 -0
  33. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +42 -0
  34. package/vscode/src/vs/platform/externalServices/common/marketplace.js +15 -0
  35. package/vscode/src/vs/platform/externalTerminal/common/externalTerminal.js +3 -0
  36. package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js +404 -0
  37. package/vscode/src/vs/platform/files/common/fileService.js +986 -0
  38. package/vscode/src/vs/platform/files/common/io.js +75 -0
  39. package/vscode/src/vs/platform/issue/common/issueReporterUtil.js +15 -0
  40. package/vscode/src/vs/platform/keyboardLayout/common/keyboardConfig.js +48 -0
  41. package/vscode/src/vs/platform/keyboardLayout/common/keyboardMapper.js +23 -0
  42. package/vscode/src/vs/platform/languagePacks/common/languagePacks.d.ts +18 -0
  43. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +25 -0
  44. package/vscode/src/vs/platform/log/common/fileLog.js +105 -0
  45. package/vscode/src/vs/platform/log/common/logIpc.js +26 -0
  46. package/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.js +355 -0
  47. package/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.js +65 -0
  48. package/vscode/src/vs/platform/remote/browser/remoteAuthorityResolverService.js +108 -0
  49. package/vscode/src/vs/platform/remote/common/managedSocket.js +96 -0
  50. package/vscode/src/vs/platform/request/browser/requestService.js +28 -0
  51. package/vscode/src/vs/platform/request/common/requestIpc.js +18 -0
  52. package/vscode/src/vs/platform/telemetry/common/commonProperties.js +11 -0
  53. package/vscode/src/vs/platform/telemetry/common/telemetry.js +2 -1
  54. package/vscode/src/vs/platform/telemetry/common/telemetryUtils.js +7 -3
  55. package/vscode/src/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +22 -0
  56. package/vscode/src/vs/platform/terminal/common/environmentVariable.js +7 -0
  57. package/vscode/src/vs/platform/terminal/common/environmentVariableCollection.js +196 -0
  58. package/vscode/src/vs/platform/terminal/common/terminalLogService.js +49 -0
  59. package/vscode/src/vs/platform/terminal/common/terminalPlatformConfiguration.js +518 -0
  60. package/vscode/src/vs/platform/terminal/common/terminalProfiles.js +111 -0
  61. package/vscode/src/vs/platform/terminal/common/terminalRecorder.js +66 -0
  62. package/vscode/src/vs/platform/update/common/update.config.contribution.js +98 -0
  63. package/vscode/src/vs/platform/url/common/urlService.js +20 -0
  64. package/vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js +93 -0
  65. package/vscode/src/vs/platform/userDataProfile/common/userDataProfileStorageService.js +8 -0
  66. package/vscode/src/vs/platform/userDataSync/common/extensionsSync.js +256 -0
  67. package/vscode/src/vs/platform/userDataSync/common/globalStateSync.js +120 -0
  68. package/vscode/src/vs/platform/userDataSync/common/keybindingsMerge.js +275 -0
  69. package/vscode/src/vs/platform/userDataSync/common/keybindingsSync.js +316 -0
  70. package/vscode/src/vs/platform/userDataSync/common/settingsSync.js +314 -0
  71. package/vscode/src/vs/platform/userDataSync/common/snippetsMerge.js +125 -0
  72. package/vscode/src/vs/platform/userDataSync/common/snippetsSync.js +474 -0
  73. package/vscode/src/vs/platform/userDataSync/common/tasksSync.js +242 -0
  74. package/vscode/src/vs/platform/userDataSync/common/userDataAutoSyncService.js +464 -0
  75. package/vscode/src/vs/platform/userDataSync/common/userDataProfilesManifestMerge.js +90 -0
  76. package/vscode/src/vs/platform/userDataSync/common/userDataProfilesManifestSync.js +257 -0
  77. package/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.js +75 -0
  78. package/vscode/src/vs/platform/userDataSync/common/userDataSyncLocalStoreService.js +148 -0
  79. package/vscode/src/vs/platform/userDataSync/common/userDataSyncLog.js +39 -0
  80. package/vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js +447 -0
  81. package/vscode/src/vs/platform/userDataSync/common/userDataSyncService.js +781 -0
  82. package/vscode/src/vs/workbench/api/browser/extensionHost.contribution.js +103 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +29 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +33 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +252 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +66 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +102 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +68 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +205 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +39 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +22 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +106 -0
  93. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +96 -0
  94. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +558 -0
  95. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +78 -0
  96. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +33 -0
  97. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +577 -0
  98. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +433 -0
  99. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +100 -0
  100. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +67 -0
  101. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +66 -0
  102. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +77 -0
  103. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +251 -0
  104. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +368 -0
  105. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +20 -0
  106. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +39 -0
  107. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +412 -0
  108. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +499 -0
  109. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +225 -0
  110. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +22 -0
  111. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +315 -0
  112. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +206 -0
  113. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +367 -0
  114. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +70 -0
  115. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +26 -0
  116. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +48 -0
  117. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +25 -0
  118. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1014 -0
  119. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +183 -0
  120. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +76 -0
  121. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +33 -0
  122. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +76 -0
  123. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +91 -0
  124. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +135 -0
  125. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +192 -0
  126. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +121 -0
  127. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +186 -0
  128. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +127 -0
  129. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +129 -0
  130. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +372 -0
  131. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +23 -0
  132. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +46 -0
  133. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +74 -0
  134. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +36 -0
  135. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +66 -0
  136. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +40 -0
  137. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +183 -0
  138. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +28 -0
  139. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +491 -0
  140. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +47 -0
  141. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +166 -0
  142. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +68 -0
  143. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +48 -0
  144. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +97 -0
  145. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +51 -0
  146. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +70 -0
  147. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +729 -0
  148. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +51 -0
  149. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +407 -0
  150. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +49 -0
  151. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +217 -0
  152. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +22 -0
  153. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +53 -0
  154. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +310 -0
  155. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +221 -0
  156. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +108 -0
  157. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +59 -0
  158. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +27 -0
  159. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +281 -0
  160. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +98 -0
  161. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +133 -0
  162. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +55 -0
  163. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +266 -0
  164. package/vscode/src/vs/workbench/api/common/configurationExtensionPoint.js +594 -0
  165. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +33 -0
  166. package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +227 -0
  167. package/vscode/src/vs/workbench/browser/layout.js +2059 -0
  168. package/vscode/src/vs/workbench/browser/parts/banner/bannerPart.js +233 -0
  169. package/vscode/src/vs/workbench/browser/parts/banner/media/bannerpart.css.js +4 -0
  170. package/vscode/src/vs/workbench/browser/parts/dialogs/dialog.web.contribution.js +74 -0
  171. package/vscode/src/vs/workbench/browser/parts/dialogs/dialogHandler.js +132 -0
  172. package/vscode/src/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +4 -0
  173. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarActions.js +119 -0
  174. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarItem.js +250 -0
  175. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarModel.js +249 -0
  176. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.js +610 -0
  177. package/vscode/src/vs/workbench/browser/parts/titlebar/commandCenterControl.js +220 -0
  178. package/vscode/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css.js +4 -0
  179. package/vscode/src/vs/workbench/browser/parts/titlebar/titlebarActions.js +259 -0
  180. package/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.js +582 -0
  181. package/vscode/src/vs/workbench/common/dialogs.js +36 -0
  182. package/vscode/src/vs/workbench/common/editor.js +5 -1
  183. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.js +23 -0
  184. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityStatus.js +112 -0
  185. package/vscode/src/vs/workbench/contrib/accessibility/browser/openDiffEditorAnnouncement.js +50 -0
  186. package/vscode/src/vs/workbench/contrib/accessibility/browser/saveAccessibilitySignal.js +18 -0
  187. package/vscode/src/vs/workbench/contrib/accessibility/browser/unfocusedViewDimmingContribution.js +66 -0
  188. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +358 -0
  189. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.js +362 -0
  190. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +265 -0
  191. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/conflicts.js +78 -0
  192. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.contribution.js +364 -0
  193. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.css.js +4 -0
  194. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.js +340 -0
  195. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPreview.js +361 -0
  196. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.js +655 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +15 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +113 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +501 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +80 -0
  201. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +75 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +108 -0
  203. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +169 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +269 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +316 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +58 -0
  207. package/vscode/src/vs/workbench/contrib/chat/browser/chatContributionServiceImpl.js +421 -0
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +96 -0
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +283 -0
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +88 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +183 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatHistoryVariables.js +25 -0
  213. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +617 -0
  214. package/vscode/src/vs/workbench/contrib/chat/common/chatService.js +2 -1
  215. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +598 -0
  216. package/vscode/src/vs/workbench/contrib/chat/common/voiceChat.js +139 -0
  217. package/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.css.js +4 -0
  218. package/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js +39 -0
  219. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.css.js +4 -0
  220. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.js +389 -0
  221. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.js +370 -0
  222. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.css.js +4 -0
  223. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.js +290 -0
  224. package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +86 -0
  225. package/vscode/src/vs/workbench/contrib/commands/common/commands.contribution.js +145 -0
  226. package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +231 -0
  227. package/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.js +282 -0
  228. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +74 -0
  229. package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +1024 -0
  230. package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +1003 -0
  231. package/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.js +345 -0
  232. package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +335 -0
  233. package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +430 -0
  234. package/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.js +1037 -0
  235. package/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +647 -0
  236. package/vscode/src/vs/workbench/contrib/debug/browser/debugConsoleQuickAccess.js +62 -0
  237. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +634 -0
  238. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +738 -0
  239. package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +406 -0
  240. package/vscode/src/vs/workbench/contrib/debug/browser/debugMemory.js +204 -0
  241. package/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.js +78 -0
  242. package/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.js +167 -0
  243. package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +1269 -0
  244. package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +1328 -0
  245. package/vscode/src/vs/workbench/contrib/debug/browser/debugSessionPicker.js +113 -0
  246. package/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.js +75 -0
  247. package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +305 -0
  248. package/vscode/src/vs/workbench/contrib/debug/browser/debugTitle.js +29 -0
  249. package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +385 -0
  250. package/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.js +265 -0
  251. package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +815 -0
  252. package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +129 -0
  253. package/vscode/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.js +140 -0
  254. package/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.js +260 -0
  255. package/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.js +667 -0
  256. package/vscode/src/vs/workbench/contrib/debug/browser/media/debug.contribution.css.js +4 -0
  257. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugHover.css.js +4 -0
  258. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugToolBar.css.js +4 -0
  259. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css.js +4 -0
  260. package/vscode/src/vs/workbench/contrib/debug/browser/media/exceptionWidget.css.js +4 -0
  261. package/vscode/src/vs/workbench/contrib/debug/browser/media/repl.css.js +4 -0
  262. package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.js +707 -0
  263. package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +1000 -0
  264. package/vscode/src/vs/workbench/contrib/debug/browser/replFilter.js +46 -0
  265. package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +350 -0
  266. package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +127 -0
  267. package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +732 -0
  268. package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +499 -0
  269. package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +160 -0
  270. package/vscode/src/vs/workbench/contrib/debug/common/breakpoints.js +19 -0
  271. package/vscode/src/vs/workbench/contrib/debug/common/debugCompoundRoot.js +15 -0
  272. package/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.js +108 -0
  273. package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +60 -0
  274. package/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.js +458 -0
  275. package/vscode/src/vs/workbench/contrib/debug/common/debugStorage.js +164 -0
  276. package/vscode/src/vs/workbench/contrib/debug/common/debugTelemetry.js +34 -0
  277. package/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.js +148 -0
  278. package/vscode/src/vs/workbench/contrib/debug/common/debugger.js +287 -0
  279. package/vscode/src/vs/workbench/contrib/debug/common/loadedScriptsPicker.js +85 -0
  280. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.js +1197 -0
  281. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.js +55 -0
  282. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.js +455 -0
  283. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsViews.js +337 -0
  284. package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.js +39 -0
  285. package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsStorageClient.js +4 -0
  286. package/vscode/src/vs/workbench/contrib/editSessions/common/workspaceStateSync.js +140 -0
  287. package/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js +41 -0
  288. package/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.js +88 -0
  289. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +539 -0
  290. package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.js +26 -0
  291. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +76 -0
  292. package/vscode/src/vs/workbench/contrib/extensions/browser/deprecatedExtensionsChecker.js +88 -0
  293. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +58 -0
  294. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1171 -0
  295. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +50 -0
  296. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +543 -0
  297. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +464 -0
  298. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +15 -0
  299. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +233 -0
  300. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2182 -0
  301. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +12 -0
  302. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +44 -0
  303. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +63 -0
  304. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +96 -0
  305. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +219 -0
  306. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +119 -0
  307. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +293 -0
  308. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +934 -0
  309. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1349 -0
  310. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +858 -0
  311. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +2349 -0
  312. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +328 -0
  313. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +26 -0
  314. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +26 -0
  315. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +4 -0
  316. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +4 -0
  317. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css.js +4 -0
  318. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css.js +4 -0
  319. package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css.js +4 -0
  320. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +27 -0
  321. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +24 -0
  322. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +36 -0
  323. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +160 -0
  324. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +56 -0
  325. package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +29 -0
  326. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +49 -0
  327. package/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js +152 -0
  328. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +81 -0
  329. package/vscode/src/vs/workbench/contrib/files/browser/explorerService.js +430 -0
  330. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.js +786 -0
  331. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands.js +510 -0
  332. package/vscode/src/vs/workbench/contrib/files/browser/files.explorer.contribution.js +460 -0
  333. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +39 -0
  334. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +39 -0
  335. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +70 -0
  336. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSavingServiceImpl.js +234 -0
  337. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChatServiceImpl.js +31 -0
  338. package/vscode/src/vs/workbench/contrib/interactive/browser/interactive.contribution.js +737 -0
  339. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.js +6 -0
  340. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditor.css.js +4 -0
  341. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditor.js +600 -0
  342. package/vscode/src/vs/workbench/contrib/interactive/browser/media/interactive.css.js +4 -0
  343. package/vscode/src/vs/workbench/contrib/issue/browser/issue.contribution.js +27 -0
  344. package/vscode/src/vs/workbench/contrib/issue/common/issue.contribution.js +102 -0
  345. package/vscode/src/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +28 -0
  346. package/vscode/src/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js +156 -0
  347. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.contribution.js +4 -0
  348. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.js +35 -0
  349. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryCommands.js +635 -0
  350. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryFileSystemProvider.js +87 -0
  351. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryTimeline.js +136 -0
  352. package/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.js +225 -0
  353. package/vscode/src/vs/workbench/contrib/logs/common/logsActions.js +12 -6
  354. package/vscode/src/vs/workbench/contrib/markdown/browser/markdownSettingRenderer.js +307 -0
  355. package/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.js +759 -0
  356. package/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.js +127 -0
  357. package/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.js +75 -0
  358. package/vscode/src/vs/workbench/contrib/markers/browser/markersModel.js +200 -0
  359. package/vscode/src/vs/workbench/contrib/markers/browser/markersTable.js +475 -0
  360. package/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.js +691 -0
  361. package/vscode/src/vs/workbench/contrib/markers/browser/markersView.js +900 -0
  362. package/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.css.js +4 -0
  363. package/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.js +132 -0
  364. package/vscode/src/vs/workbench/contrib/markers/browser/media/markers.css.js +4 -0
  365. package/vscode/src/vs/workbench/contrib/markers/browser/messages.js +301 -0
  366. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/utils.js +1 -1
  367. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/actions.js +108 -0
  368. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.contribution.js +39 -0
  369. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.js +117 -0
  370. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver.js +146 -0
  371. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/contributedStatusBarItemController.js +107 -0
  372. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/statusBarProviders.js +172 -0
  373. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/clipboard/notebookClipboard.js +542 -0
  374. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookBreakpoints.js +105 -0
  375. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookCellPausing.js +66 -0
  376. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookDebugDecorations.js +163 -0
  377. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorHint/emptyCellEditorHint.js +65 -0
  378. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorStatusBar/editorStatusBar.js +318 -0
  379. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/execute/executionEditorProgress.js +70 -0
  380. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css.js +4 -0
  381. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFind.js +167 -0
  382. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js +207 -0
  383. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/gettingStarted/notebookGettingStarted.js +82 -0
  384. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/kernelDetection/notebookKernelDetection.js +81 -0
  385. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/layout/layoutActions.js +65 -0
  386. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/marker/markerProvider.js +100 -0
  387. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/navigation/arrow.js +391 -0
  388. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands.js +62 -0
  389. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableContextKeys.js +3 -0
  390. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariables.js +95 -0
  391. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesDataSource.js +118 -0
  392. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesTree.js +58 -0
  393. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesView.js +148 -0
  394. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.js +654 -0
  395. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.js +75 -0
  396. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/saveParticipants/saveParticipants.js +515 -0
  397. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/troubleshoot/layout.js +157 -0
  398. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/undoRedo/notebookUndoRedo.js +55 -0
  399. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/viewportWarmup/viewportWarmup.js +93 -0
  400. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/apiActions.js +50 -0
  401. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +651 -0
  402. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/executeActions.js +719 -0
  403. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +349 -0
  404. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/layoutActions.js +314 -0
  405. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/sectionActions.js +197 -0
  406. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +46 -0
  407. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1295 -0
  408. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +282 -0
  409. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +561 -0
  410. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +113 -0
  411. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +37 -0
  412. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css.js +4 -0
  413. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffActions.js +312 -0
  414. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +909 -0
  415. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +11 -0
  416. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +393 -0
  417. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +183 -0
  418. package/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.js +1185 -0
  419. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibility.js +157 -0
  420. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookExtensionPoint.js +449 -0
  421. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookEditorServiceImpl.js +190 -0
  422. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionServiceImpl.js +104 -0
  423. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionStateServiceImpl.js +508 -0
  424. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelHistoryServiceImpl.js +128 -0
  425. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelServiceImpl.js +339 -0
  426. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKeymapServiceImpl.js +109 -0
  427. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookLoggingServiceImpl.js +26 -0
  428. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookRendererMessagingServiceImpl.js +63 -0
  429. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookServiceImpl.js +639 -0
  430. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.js +198 -0
  431. package/vscode/src/vs/workbench/contrib/notebook/common/model/cellEdit.js +89 -0
  432. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.js +1000 -0
  433. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiffEditorInput.js +101 -0
  434. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverServiceImpl.js +201 -0
  435. package/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js +78 -0
  436. package/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.js +96 -0
  437. package/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.js +367 -0
  438. package/vscode/src/vs/workbench/contrib/outline/browser/outlineActions.js +172 -0
  439. package/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.css.js +4 -0
  440. package/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.js +316 -0
  441. package/vscode/src/vs/workbench/contrib/outline/browser/outlineViewState.js +66 -0
  442. package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +613 -0
  443. package/vscode/src/vs/workbench/contrib/output/browser/output.css.js +4 -0
  444. package/vscode/src/vs/workbench/contrib/output/browser/outputLinkProvider.js +76 -0
  445. package/vscode/src/vs/workbench/contrib/output/browser/outputServices.js +200 -0
  446. package/vscode/src/vs/workbench/contrib/output/browser/outputView.js +224 -0
  447. package/vscode/src/vs/workbench/contrib/performance/browser/inputLatencyContrib.js +43 -0
  448. package/vscode/src/vs/workbench/contrib/performance/browser/performance.contribution.js +116 -0
  449. package/vscode/src/vs/workbench/contrib/performance/browser/performance.web.contribution.js +5 -0
  450. package/vscode/src/vs/workbench/contrib/performance/browser/perfviewEditor.js +340 -0
  451. package/vscode/src/vs/workbench/contrib/performance/browser/startupTimings.js +114 -0
  452. package/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.js +1237 -0
  453. package/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js +248 -0
  454. package/vscode/src/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css.js +4 -0
  455. package/vscode/src/vs/workbench/contrib/preferences/browser/media/preferences.css.js +4 -0
  456. package/vscode/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css.js +4 -0
  457. package/vscode/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css.js +4 -0
  458. package/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.js +1374 -0
  459. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.js +104 -0
  460. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.js +47 -0
  461. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.js +784 -0
  462. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.js +461 -0
  463. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.js +1578 -0
  464. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.js +624 -0
  465. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsSearchMenu.js +135 -0
  466. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.js +2122 -0
  467. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.js +1158 -0
  468. package/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.js +217 -0
  469. package/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.js +160 -0
  470. package/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.js +124 -0
  471. package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +293 -0
  472. package/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +167 -0
  473. package/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +264 -0
  474. package/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js +206 -0
  475. package/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.js +133 -0
  476. package/vscode/src/vs/workbench/contrib/remote/browser/media/remoteViewlet.css.js +4 -0
  477. package/vscode/src/vs/workbench/contrib/remote/browser/remote.contribution.js +18 -0
  478. package/vscode/src/vs/workbench/contrib/remote/browser/remote.js +829 -0
  479. package/vscode/src/vs/workbench/contrib/remote/browser/remoteConnectionHealth.js +164 -0
  480. package/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.js +800 -0
  481. package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.contribution.js +5 -0
  482. package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.js +95 -0
  483. package/vscode/src/vs/workbench/contrib/remote/browser/showCandidate.js +33 -0
  484. package/vscode/src/vs/workbench/contrib/remote/browser/tunnelFactory.js +108 -0
  485. package/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.js +513 -0
  486. package/vscode/src/vs/workbench/contrib/scm/browser/activity.js +306 -0
  487. package/vscode/src/vs/workbench/contrib/scm/browser/media/scm.css.js +4 -0
  488. package/vscode/src/vs/workbench/contrib/scm/browser/menus.js +278 -0
  489. package/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.js +701 -0
  490. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoriesViewPane.js +172 -0
  491. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoryRenderer.js +134 -0
  492. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPane.js +3365 -0
  493. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.js +52 -0
  494. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewService.js +303 -0
  495. package/vscode/src/vs/workbench/contrib/scm/browser/util.js +119 -0
  496. package/vscode/src/vs/workbench/contrib/scm/common/quickDiffService.js +74 -0
  497. package/vscode/src/vs/workbench/contrib/scm/common/scmService.js +310 -0
  498. package/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.js +794 -0
  499. package/vscode/src/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css.js +4 -0
  500. package/vscode/src/vs/workbench/contrib/search/browser/media/searchview.css.js +4 -0
  501. package/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.js +232 -0
  502. package/vscode/src/vs/workbench/contrib/search/browser/quickTextSearch/textSearchQuickAccess.js +339 -0
  503. package/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.js +7 -0
  504. package/vscode/src/vs/workbench/contrib/search/browser/replaceService.js +230 -0
  505. package/vscode/src/vs/workbench/contrib/search/browser/search.contribution.js +646 -0
  506. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsCopy.js +207 -0
  507. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsNav.js +510 -0
  508. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsRemoveReplace.js +372 -0
  509. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsSymbol.js +42 -0
  510. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsTextQuickAccess.js +43 -0
  511. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsTopBar.js +322 -0
  512. package/vscode/src/vs/workbench/contrib/search/browser/searchFindInput.js +101 -0
  513. package/vscode/src/vs/workbench/contrib/search/browser/searchIcons.js +104 -0
  514. package/vscode/src/vs/workbench/contrib/search/browser/searchMessage.js +64 -0
  515. package/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.js +435 -0
  516. package/vscode/src/vs/workbench/contrib/search/browser/searchView.js +2175 -0
  517. package/vscode/src/vs/workbench/contrib/search/browser/searchWidget.js +672 -0
  518. package/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.js +232 -0
  519. package/vscode/src/vs/workbench/contrib/search/common/cacheState.js +85 -0
  520. package/vscode/src/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css.js +4 -0
  521. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js +585 -0
  522. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.js +758 -0
  523. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js +187 -0
  524. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +318 -0
  525. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorModel.js +136 -0
  526. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +291 -0
  527. package/vscode/src/vs/workbench/contrib/share/browser/share.contribution.js +167 -0
  528. package/vscode/src/vs/workbench/contrib/share/browser/share.css.js +4 -0
  529. package/vscode/src/vs/workbench/contrib/share/browser/shareService.js +70 -0
  530. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/configureSnippets.js +331 -0
  531. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/insertSnippet.js +127 -0
  532. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/surroundWithSnippet.js +57 -0
  533. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCodeActionProvider.js +154 -0
  534. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetPicker.js +111 -0
  535. package/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.js +141 -0
  536. package/vscode/src/vs/workbench/contrib/speech/browser/speechService.js +271 -0
  537. package/vscode/src/vs/workbench/contrib/surveys/browser/ces.contribution.js +137 -0
  538. package/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js +50 -0
  539. package/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.js +92 -0
  540. package/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.js +3857 -0
  541. package/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js +183 -0
  542. package/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.js +682 -0
  543. package/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.js +450 -0
  544. package/vscode/src/vs/workbench/contrib/tasks/browser/taskService.js +36 -0
  545. package/vscode/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.js +189 -0
  546. package/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +119 -0
  547. package/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js +1711 -0
  548. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js +437 -0
  549. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.js +123 -0
  550. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.js +899 -0
  551. package/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.js +463 -0
  552. package/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.js +1794 -0
  553. package/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.js +1579 -0
  554. package/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.js +14 -0
  555. package/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.js +143 -0
  556. package/vscode/src/vs/workbench/contrib/terminal/browser/baseTerminalBackend.js +114 -0
  557. package/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +133 -0
  558. package/vscode/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css.js +4 -0
  559. package/vscode/src/vs/workbench/contrib/terminal/browser/media/terminal.css.js +4 -0
  560. package/vscode/src/vs/workbench/contrib/terminal/browser/media/terminalVoice.css.js +4 -0
  561. package/vscode/src/vs/workbench/contrib/terminal/browser/media/widgets.css.js +4 -0
  562. package/vscode/src/vs/workbench/contrib/terminal/browser/media/xterm.css.js +4 -0
  563. package/vscode/src/vs/workbench/contrib/terminal/browser/remotePty.js +91 -0
  564. package/vscode/src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.js +312 -0
  565. package/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.js +267 -0
  566. package/vscode/src/vs/workbench/contrib/terminal/browser/terminal.web.contribution.js +11 -0
  567. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.js +2070 -0
  568. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.js +22 -0
  569. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js +221 -0
  570. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +40 -0
  571. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditor.js +193 -0
  572. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorSerializer.js +40 -0
  573. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorService.js +239 -0
  574. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEscapeSequences.js +12 -0
  575. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEvents.js +47 -0
  576. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalGroup.js +501 -0
  577. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalGroupService.js +368 -0
  578. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.js +2180 -0
  579. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstanceService.js +81 -0
  580. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalMainContribution.js +94 -0
  581. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalMenus.js +840 -0
  582. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +619 -0
  583. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.js +312 -0
  584. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.js +285 -0
  585. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileService.js +225 -0
  586. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js +155 -0
  587. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalRunRecentQuickPick.js +335 -0
  588. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.js +1156 -0
  589. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalStatusList.js +121 -0
  590. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.js +439 -0
  591. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabsList.js +690 -0
  592. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTooltip.js +84 -0
  593. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalUri.js +39 -0
  594. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.js +628 -0
  595. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalVoice.js +199 -0
  596. package/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js +91 -0
  597. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +56 -0
  598. package/vscode/src/vs/workbench/contrib/terminal/common/basePty.js +91 -0
  599. package/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.js +96 -0
  600. package/vscode/src/vs/workbench/contrib/terminal/common/history.js +375 -0
  601. package/vscode/src/vs/workbench/contrib/terminal/common/remote/remoteTerminalChannel.js +253 -0
  602. package/vscode/src/vs/workbench/contrib/terminal/common/terminalClipboard.js +98 -0
  603. package/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.js +1351 -0
  604. package/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.js +282 -0
  605. package/vscode/src/vs/workbench/contrib/terminal/common/terminalStrings.js +145 -0
  606. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/bufferContentTracker.js +112 -0
  607. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.js +389 -0
  608. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.js +190 -0
  609. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBufferProvider.js +102 -0
  610. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.js +106 -0
  611. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css.js +4 -0
  612. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +9 -0
  613. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +84 -0
  614. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +125 -0
  615. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +31 -0
  616. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +344 -0
  617. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +335 -0
  618. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +154 -0
  619. package/vscode/src/vs/workbench/contrib/terminalContrib/developer/browser/media/developer.css.js +4 -0
  620. package/vscode/src/vs/workbench/contrib/terminalContrib/developer/browser/terminal.developer.contribution.js +237 -0
  621. package/vscode/src/vs/workbench/contrib/terminalContrib/environmentChanges/browser/terminal.environmentChanges.contribution.js +114 -0
  622. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/terminal.find.contribution.js +264 -0
  623. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/terminalFindWidget.js +165 -0
  624. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/textInputContextMenu.js +61 -0
  625. package/vscode/src/vs/workbench/contrib/terminalContrib/highlight/browser/terminal.highlight.contribution.js +36 -0
  626. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminal.links.contribution.js +132 -0
  627. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalExternalLinkDetector.js +38 -0
  628. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLink.js +120 -0
  629. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkDetectorAdapter.js +108 -0
  630. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkHelpers.js +175 -0
  631. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkManager.js +394 -0
  632. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkOpeners.js +240 -0
  633. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkParsing.js +206 -0
  634. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkQuickpick.js +264 -0
  635. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkResolver.js +141 -0
  636. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.js +220 -0
  637. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalMultiLineLinkDetector.js +182 -0
  638. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalUriLinkDetector.js +119 -0
  639. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalWordLinkDetector.js +94 -0
  640. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/media/terminalQuickFix.css.js +4 -0
  641. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFixAddon.js +451 -0
  642. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminal.quickFix.contribution.js +61 -0
  643. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixBuiltinActions.js +323 -0
  644. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixService.js +168 -0
  645. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/media/stickyScroll.css.js +4 -0
  646. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminal.stickyScroll.contribution.js +5 -0
  647. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollColorRegistry.js +35 -0
  648. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollContribution.js +91 -0
  649. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.js +379 -0
  650. package/vscode/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminal.suggest.contribution.js +181 -0
  651. package/vscode/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalSuggestAddon.js +406 -0
  652. package/vscode/src/vs/workbench/contrib/terminalContrib/typeAhead/browser/terminal.typeAhead.contribution.js +54 -0
  653. package/vscode/src/vs/workbench/contrib/terminalContrib/typeAhead/browser/terminalTypeAheadAddon.js +1047 -0
  654. package/vscode/src/vs/workbench/contrib/terminalContrib/zoom/browser/terminal.zoom.contribution.js +130 -0
  655. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDecorations.js +589 -0
  656. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/display.js +2 -0
  657. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/index.js +81 -0
  658. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/listProjection.js +184 -0
  659. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testItemContextOverlay.js +16 -0
  660. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testingObjectTree.js +44 -0
  661. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testingViewState.js +15 -0
  662. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/treeProjection.js +222 -0
  663. package/vscode/src/vs/workbench/contrib/testing/browser/icons.js +182 -0
  664. package/vscode/src/vs/workbench/contrib/testing/browser/media/testMessageColorizer.css.js +4 -0
  665. package/vscode/src/vs/workbench/contrib/testing/browser/media/testing.css.js +4 -0
  666. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageBars.js +238 -0
  667. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageView.js +562 -0
  668. package/vscode/src/vs/workbench/contrib/testing/browser/testExplorerActions.js +1671 -0
  669. package/vscode/src/vs/workbench/contrib/testing/browser/testMessageColorizer.js +71 -0
  670. package/vscode/src/vs/workbench/contrib/testing/browser/testing.contribution.js +224 -0
  671. package/vscode/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.js +119 -0
  672. package/vscode/src/vs/workbench/contrib/testing/browser/testingDecorations.js +968 -0
  673. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.js +234 -0
  674. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerView.js +1239 -0
  675. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.css.js +4 -0
  676. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.js +2108 -0
  677. package/vscode/src/vs/workbench/contrib/testing/browser/testingProgressUiService.js +140 -0
  678. package/vscode/src/vs/workbench/contrib/testing/browser/testingViewPaneContainer.js +45 -0
  679. package/vscode/src/vs/workbench/contrib/testing/browser/theme.js +335 -0
  680. package/vscode/src/vs/workbench/contrib/testing/common/configuration.js +274 -0
  681. package/vscode/src/vs/workbench/contrib/testing/common/constants.js +57 -0
  682. package/vscode/src/vs/workbench/contrib/testing/common/mainThreadTestCollection.js +127 -0
  683. package/vscode/src/vs/workbench/contrib/testing/common/observableUtils.js +19 -0
  684. package/vscode/src/vs/workbench/contrib/testing/common/testExclusions.js +46 -0
  685. package/vscode/src/vs/workbench/contrib/testing/common/testServiceImpl.js +294 -0
  686. package/vscode/src/vs/workbench/contrib/testing/common/testingContentProvider.js +123 -0
  687. package/vscode/src/vs/workbench/contrib/testing/common/testingUri.js +65 -0
  688. package/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.js +955 -0
  689. package/vscode/src/vs/workbench/contrib/timeline/browser/media/timelinePane.css.js +4 -0
  690. package/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.js +118 -0
  691. package/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.js +1161 -0
  692. package/vscode/src/vs/workbench/contrib/timeline/common/timelineService.js +106 -0
  693. package/vscode/src/vs/workbench/contrib/update/browser/media/releasenoteseditor.css.js +4 -0
  694. package/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.js +411 -0
  695. package/vscode/src/vs/workbench/contrib/update/browser/update.contribution.js +252 -0
  696. package/vscode/src/vs/workbench/contrib/update/browser/update.js +676 -0
  697. package/vscode/src/vs/workbench/contrib/url/browser/externalUriResolver.js +26 -0
  698. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomains.js +198 -0
  699. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomainsFileSystemProvider.js +135 -0
  700. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomainsValidator.js +203 -0
  701. package/vscode/src/vs/workbench/contrib/url/browser/url.contribution.js +66 -0
  702. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js +110 -0
  703. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.js +1466 -0
  704. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncConflictsView.js +223 -0
  705. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js +59 -0
  706. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.js +858 -0
  707. package/vscode/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.js +45 -0
  708. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/media/welcomeWidget.css.js +4 -0
  709. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/welcomeDialog.contribution.js +102 -0
  710. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/welcomeWidget.js +187 -0
  711. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +380 -0
  712. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +1526 -0
  713. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +47 -0
  714. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.js +261 -0
  715. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +14 -0
  716. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +51 -0
  717. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedList.js +95 -0
  718. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css.js +4 -0
  719. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +216 -0
  720. package/vscode/src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.js +237 -0
  721. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcome.contribution.js +18 -0
  722. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeContribution.js +73 -0
  723. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeExtensionPoint.js +97 -0
  724. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +61 -0
  725. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/media/walkThroughPart.css.js +4 -0
  726. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +38 -0
  727. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.js +57 -0
  728. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +113 -0
  729. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +429 -0
  730. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.js +74 -0
  731. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.js +18 -0
  732. package/vscode/src/vs/workbench/contrib/workspace/browser/media/workspaceTrustEditor.css.js +4 -0
  733. package/vscode/src/vs/workbench/contrib/workspace/browser/workspace.contribution.js +976 -0
  734. package/vscode/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.js +1243 -0
  735. package/vscode/src/vs/workbench/contrib/workspaces/browser/workspaces.contribution.js +132 -0
  736. package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +1595 -0
  737. package/vscode/src/vs/workbench/services/aiRelatedInformation/common/aiRelatedInformationService.js +82 -0
  738. package/vscode/src/vs/workbench/services/authentication/browser/authenticationExtensionsService.js +369 -0
  739. package/vscode/src/vs/workbench/services/commands/common/commandService.js +77 -0
  740. package/vscode/src/vs/workbench/services/configuration/browser/configuration.js +850 -0
  741. package/vscode/src/vs/workbench/services/configuration/browser/configurationService.js +1199 -0
  742. package/vscode/src/vs/workbench/services/configuration/common/configurationEditing.js +666 -0
  743. package/vscode/src/vs/workbench/services/configuration/common/configurationModels.js +119 -0
  744. package/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.js +120 -0
  745. package/vscode/src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.js +309 -0
  746. package/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.js +27 -0
  747. package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +330 -0
  748. package/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.js +377 -0
  749. package/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.js +1037 -0
  750. package/vscode/src/vs/workbench/services/dialogs/common/dialogService.js +70 -0
  751. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +638 -0
  752. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionsProfileScannerService.js +22 -0
  753. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +892 -0
  754. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +232 -0
  755. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.js +107 -0
  756. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +61 -0
  757. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +1043 -0
  758. package/vscode/src/vs/workbench/services/extensionManagement/common/remoteExtensionManagementService.js +56 -0
  759. package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +279 -0
  760. package/vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js +82 -0
  761. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +283 -0
  762. package/vscode/src/vs/workbench/services/extensions/browser/extensionsScannerService.js +31 -0
  763. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +274 -0
  764. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +50 -0
  765. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1147 -0
  766. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +40 -0
  767. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +23 -0
  768. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +510 -0
  769. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +272 -0
  770. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +56 -0
  771. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +78 -0
  772. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +62 -0
  773. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +159 -0
  774. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +47 -0
  775. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +220 -0
  776. package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +428 -0
  777. package/vscode/src/vs/workbench/services/issue/browser/issueService.js +97 -0
  778. package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +945 -0
  779. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayoutService.js +500 -0
  780. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution.js +13 -0
  781. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/cz.win.js +162 -0
  782. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de-swiss.win.js +162 -0
  783. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.darwin.js +125 -0
  784. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.linux.js +180 -0
  785. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.win.js +162 -0
  786. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/dk.win.js +162 -0
  787. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/dvorak.darwin.js +125 -0
  788. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-belgian.win.js +162 -0
  789. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-ext.darwin.js +125 -0
  790. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-in.win.js +162 -0
  791. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.darwin.js +125 -0
  792. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.win.js +162 -0
  793. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.darwin.js +125 -0
  794. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.win.js +162 -0
  795. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.darwin.js +133 -0
  796. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.linux.js +182 -0
  797. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.win.js +167 -0
  798. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es-latin.win.js +162 -0
  799. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.darwin.js +125 -0
  800. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.linux.js +180 -0
  801. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.win.js +162 -0
  802. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.darwin.js +125 -0
  803. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.linux.js +180 -0
  804. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.win.js +162 -0
  805. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/hu.win.js +162 -0
  806. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/it.darwin.js +125 -0
  807. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/it.win.js +162 -0
  808. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/jp-roman.darwin.js +125 -0
  809. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/jp.darwin.js +125 -0
  810. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ko.darwin.js +125 -0
  811. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.darwin.js +17 -0
  812. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux.js +6 -0
  813. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.win.js +23 -0
  814. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/no.win.js +162 -0
  815. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pl.darwin.js +125 -0
  816. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pl.win.js +162 -0
  817. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt-br.win.js +162 -0
  818. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt.darwin.js +125 -0
  819. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt.win.js +162 -0
  820. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.darwin.js +125 -0
  821. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.linux.js +180 -0
  822. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.win.js +162 -0
  823. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/sv.win.js +164 -0
  824. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/thai.win.js +162 -0
  825. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/tr.win.js +162 -0
  826. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/zh-hans.darwin.js +125 -0
  827. package/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.js +72 -0
  828. package/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.js +108 -0
  829. package/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js +886 -0
  830. package/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js +350 -0
  831. package/vscode/src/vs/workbench/services/label/common/labelService.js +435 -0
  832. package/vscode/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js +259 -0
  833. package/vscode/src/vs/workbench/services/lifecycle/browser/lifecycleService.js +135 -0
  834. package/vscode/src/vs/workbench/services/localization/common/locale.d.ts +11 -0
  835. package/vscode/src/vs/workbench/services/notification/common/notificationService.js +251 -0
  836. package/vscode/src/vs/workbench/services/preferences/browser/preferencesService.js +551 -0
  837. package/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.js +37 -0
  838. package/vscode/src/vs/workbench/services/remote/browser/browserRemoteResourceHandler.js +47 -0
  839. package/vscode/src/vs/workbench/services/remote/browser/remoteAgentService.js +76 -0
  840. package/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.js +177 -0
  841. package/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js +52 -0
  842. package/vscode/src/vs/workbench/services/remote/common/remoteExtensionsScanner.js +71 -0
  843. package/vscode/src/vs/workbench/services/request/browser/requestService.js +48 -0
  844. package/vscode/src/vs/workbench/services/search/common/searchService.js +414 -0
  845. package/vscode/src/vs/workbench/services/storage/browser/storageService.js +290 -0
  846. package/vscode/src/vs/workbench/services/suggest/browser/media/suggest.css.js +4 -0
  847. package/vscode/src/vs/workbench/services/suggest/browser/simpleCompletionItem.js +9 -0
  848. package/vscode/src/vs/workbench/services/suggest/browser/simpleCompletionModel.js +97 -0
  849. package/vscode/src/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +428 -0
  850. package/vscode/src/vs/workbench/services/suggest/browser/simpleSuggestWidgetRenderer.js +83 -0
  851. package/vscode/src/vs/workbench/services/textMate/browser/arrayOperation.js +62 -0
  852. package/vscode/src/vs/workbench/services/textMate/browser/backgroundTokenization/textMateWorkerTokenizerController.js +160 -0
  853. package/vscode/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.js +200 -0
  854. package/vscode/src/vs/workbench/services/textMate/browser/textMateTokenizationFeatureImpl.js +482 -0
  855. package/vscode/src/vs/workbench/services/textMate/browser/tokenizationSupport/textMateTokenizationSupport.js +72 -0
  856. package/vscode/src/vs/workbench/services/textMate/browser/tokenizationSupport/tokenizationSupportWithLineLimit.js +39 -0
  857. package/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.js +118 -0
  858. package/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.js +15 -0
  859. package/vscode/src/vs/workbench/services/textfile/browser/browserTextFileService.js +57 -0
  860. package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +652 -0
  861. package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +402 -0
  862. package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +62 -0
  863. package/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.js +191 -0
  864. package/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js +44 -0
  865. package/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.js +372 -0
  866. package/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.js +305 -0
  867. package/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.js +768 -0
  868. package/vscode/src/vs/workbench/services/themes/common/colorThemeData.js +886 -0
  869. package/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.js +309 -0
  870. package/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.js +432 -0
  871. package/vscode/src/vs/workbench/services/themes/common/plistParser.js +439 -0
  872. package/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.js +114 -0
  873. package/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.js +120 -0
  874. package/vscode/src/vs/workbench/services/themes/common/themeCompatibility.js +76 -0
  875. package/vscode/src/vs/workbench/services/themes/common/themeConfiguration.js +469 -0
  876. package/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.js +340 -0
  877. package/vscode/src/vs/workbench/services/tunnel/browser/tunnelService.js +34 -0
  878. package/vscode/src/vs/workbench/services/url/browser/urlService.js +48 -0
  879. package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +340 -0
  880. package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +145 -0
  881. package/vscode/src/vs/workbench/services/userDataProfile/browser/iconSelectBox.js +96 -0
  882. package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +117 -0
  883. package/vscode/src/vs/workbench/services/userDataProfile/browser/media/userDataProfileView.css.js +4 -0
  884. package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +138 -0
  885. package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +153 -0
  886. package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +116 -0
  887. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +1752 -0
  888. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.js +148 -0
  889. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +188 -0
  890. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +7 -2
  891. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncInit.js +445 -0
  892. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js +786 -0
  893. package/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.js +46 -0
  894. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyBackupService.js +23 -0
  895. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyBackupTracker.js +43 -0
  896. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyHistoryService.js +28 -0
  897. package/vscode/src/vs/workbench/services/workingCopy/common/abstractFileWorkingCopyManager.js +87 -0
  898. package/vscode/src/vs/workbench/services/workingCopy/common/fileWorkingCopyManager.js +384 -0
  899. package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopyManager.js +406 -0
  900. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopy.js +142 -0
  901. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopyManager.js +127 -0
  902. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupService.js +452 -0
  903. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupTracker.js +253 -0
  904. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyHistoryService.js +616 -0
  905. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyHistoryTracker.js +162 -0
  906. package/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js +335 -0
  907. package/vscode/src/vs/workbench/services/workspaces/browser/workspaceTrustEditorInput.js +41 -0
  908. package/vscode/src/vs/workbench/services/workspaces/browser/workspacesService.js +151 -0
  909. package/vscode/src/vs/workbench/services/workspaces/common/editSessionIdentityService.js +60 -0
@@ -0,0 +1,3857 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { Action } from '../../../../base/common/actions.js';
3
+ import { Emitter, Event } from '../../../../base/common/event.js';
4
+ import { match } from '../../../../base/common/glob.js';
5
+ import { parse as parse$1 } from '../../../../base/common/json.js';
6
+ import { Disposable, dispose } from '../../../../base/common/lifecycle.js';
7
+ import { LRUCache } from '../../../../base/common/map.js';
8
+ import { deepClone } from '../../../../base/common/objects.js';
9
+ import { ValidationStatus } from '../../../../base/common/parsers.js';
10
+ import { isWeb, platform } from '../../../../base/common/platform.js';
11
+ import { basename, joinPath, dirname, relativePath } from '../../../../base/common/resources.js';
12
+ import Severity$1 from '../../../../base/common/severity.js';
13
+ import { isString, isBoolean, isStringArray } from '../../../../base/common/types.js';
14
+ import { URI } from '../../../../base/common/uri.js';
15
+ import { generateUuid } from '../../../../base/common/uuid.js';
16
+ import { localizeWithPath, localize2WithPath } from '../../../../nls.js';
17
+ import { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';
18
+ import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
19
+ import { IFileService } from '../../../../platform/files/common/files.js';
20
+ import { IMarkerService } from '../../../../platform/markers/common/markers.js';
21
+ import { IProgressService } from '../../../../platform/progress/common/progress.js';
22
+ import { IStorageService } from '../../../../platform/storage/common/storage.js';
23
+ import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
24
+ import { ProblemMatcherRegistry } from '../common/problemMatcher.js';
25
+ import { IExtensionService } from '../../../services/extensions/common/extensions.js';
26
+ import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
27
+ import { INotificationService } from '../../../../platform/notification/common/notification.js';
28
+ import { IOpenerService } from '../../../../platform/opener/common/opener.js';
29
+ import { IModelService } from '../../../../editor/common/services/model.js';
30
+ import { WorkspaceFolder, IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';
31
+ import { Markers } from '../../markers/common/markers.js';
32
+ import { IConfigurationResolverService } from '../../../services/configurationResolver/common/configurationResolver.js';
33
+ import { IEditorService } from '../../../services/editor/common/editorService.js';
34
+ import { IOutputService } from '../../../services/output/common/output.js';
35
+ import { ITextFileService } from '../../../services/textfile/common/textfiles.js';
36
+ import { ITerminalService, ITerminalGroupService } from '../../terminal/browser/terminal.js';
37
+ import { ITerminalProfileResolverService } from '../../terminal/common/terminal.js';
38
+ import { TASK_RUNNING_STATE, TaskGroup, ConfiguringTask, TaskSourceKind, TaskDefinition, USER_TASKS_GROUP_KEY, ContributedTask, CustomTask, TaskSorter, InMemoryTask, KeyedTaskIdentifier, ExecutionEngine, RuntimeType } from '../common/tasks.js';
39
+ import { TaskCommandsRegistered, ServerlessWebContext, CustomExecutionSupportedContext, ShellExecutionSupportedContext, ProcessExecutionSupportedContext, TaskExecutionSupportedContext } from '../common/taskService.js';
40
+ import { TaskError } from '../common/taskSystem.js';
41
+ import { getTemplates } from '../common/taskTemplates.js';
42
+ import { createCustomTask, TaskConfigSource, GroupKind, parse, ExecutionEngine as ExecutionEngine$1, JsonSchemaVersion } from '../common/taskConfiguration.js';
43
+ import { TerminalTaskSystem } from './terminalTaskSystem.js';
44
+ import { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';
45
+ import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
46
+ import { TaskDefinitionRegistry } from '../common/taskDefinitionRegistry.js';
47
+ import { raceTimeout } from '../../../../base/common/async.js';
48
+ import { CancellationTokenSource } from '../../../../base/common/cancellation.js';
49
+ import { toFormattedString } from '../../../../base/common/jsonFormatter.js';
50
+ import { Schemas } from '../../../../base/common/network.js';
51
+ import { ThemeIcon } from '../../../../base/common/themables.js';
52
+ import { ITextModelService } from '../../../../editor/common/services/resolverService.js';
53
+ import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
54
+ import { ILogService } from '../../../../platform/log/common/log.js';
55
+ import { TerminalExitReason } from '../../../../platform/terminal/common/terminal.js';
56
+ import { IThemeService } from '../../../../platform/theme/common/themeService.js';
57
+ import { IWorkspaceTrustRequestService, IWorkspaceTrustManagementService } from '../../../../platform/workspace/common/workspaceTrust.js';
58
+ import { VirtualWorkspaceContext } from '../../../common/contextkeys.js';
59
+ import { EditorResourceAccessor } from '../../../common/editor.js';
60
+ import { IViewDescriptorService } from '../../../common/views.js';
61
+ import { IViewsService } from '../../../services/views/common/viewsService.js';
62
+ import { isWorkspaceFolder, QUICKOPEN_DETAIL_CONFIG, TaskQuickPick, QUICKOPEN_SKIP_CONFIG, configureTaskIcon } from './taskQuickPick.js';
63
+ import { IWorkbenchEnvironmentService } from '../../../services/environment/common/environmentService.js';
64
+ import { ILifecycleService } from '../../../services/lifecycle/common/lifecycle.js';
65
+ import { IPaneCompositePartService } from '../../../services/panecomposite/browser/panecomposite.js';
66
+ import { IPathService } from '../../../services/path/common/pathService.js';
67
+ import { IPreferencesService } from '../../../services/preferences/common/preferences.js';
68
+ import { IRemoteAgentService } from '../../../services/remote/common/remoteAgentService.js';
69
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
70
+ var AbstractTaskService_1;
71
+ const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history';
72
+ const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt';
73
+ const USE_SLOW_PICKER = 'task.quickOpen.showAll';
74
+ var ConfigureTaskAction;
75
+ ( (function(ConfigureTaskAction) {
76
+ ConfigureTaskAction.ID = 'workbench.action.tasks.configureTaskRunner';
77
+ ConfigureTaskAction.TEXT = ( localize2WithPath(
78
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
79
+ 'ConfigureTaskRunnerAction.label',
80
+ "Configure Task"
81
+ ));
82
+ })(ConfigureTaskAction || (ConfigureTaskAction = {})));
83
+ class ProblemReporter {
84
+ constructor(_outputChannel) {
85
+ this._outputChannel = _outputChannel;
86
+ this._validationStatus = ( new ValidationStatus());
87
+ }
88
+ info(message) {
89
+ this._validationStatus.state = 1 ;
90
+ this._outputChannel.append(message + '\n');
91
+ }
92
+ warn(message) {
93
+ this._validationStatus.state = 2 ;
94
+ this._outputChannel.append(message + '\n');
95
+ }
96
+ error(message) {
97
+ this._validationStatus.state = 3 ;
98
+ this._outputChannel.append(message + '\n');
99
+ }
100
+ fatal(message) {
101
+ this._validationStatus.state = 4 ;
102
+ this._outputChannel.append(message + '\n');
103
+ }
104
+ get status() {
105
+ return this._validationStatus;
106
+ }
107
+ }
108
+ class TaskMap {
109
+ constructor() {
110
+ this._store = ( new Map());
111
+ }
112
+ forEach(callback) {
113
+ this._store.forEach(callback);
114
+ }
115
+ static getKey(workspaceFolder) {
116
+ let key;
117
+ if (isString(workspaceFolder)) {
118
+ key = workspaceFolder;
119
+ }
120
+ else {
121
+ const uri = isWorkspaceFolder(workspaceFolder) ? workspaceFolder.uri : workspaceFolder.configuration;
122
+ key = uri ? ( uri.toString()) : '';
123
+ }
124
+ return key;
125
+ }
126
+ get(workspaceFolder) {
127
+ const key = TaskMap.getKey(workspaceFolder);
128
+ let result = this._store.get(key);
129
+ if (!result) {
130
+ result = [];
131
+ this._store.set(key, result);
132
+ }
133
+ return result;
134
+ }
135
+ add(workspaceFolder, ...task) {
136
+ const key = TaskMap.getKey(workspaceFolder);
137
+ let values = this._store.get(key);
138
+ if (!values) {
139
+ values = [];
140
+ this._store.set(key, values);
141
+ }
142
+ values.push(...task);
143
+ }
144
+ all() {
145
+ const result = [];
146
+ this._store.forEach((values) => result.push(...values));
147
+ return result;
148
+ }
149
+ }
150
+ let AbstractTaskService = class AbstractTaskService extends Disposable {
151
+ static { AbstractTaskService_1 = this; }
152
+ static { this.RecentlyUsedTasks_Key = 'workbench.tasks.recentlyUsedTasks'; }
153
+ static { this.RecentlyUsedTasks_KeyV2 = 'workbench.tasks.recentlyUsedTasks2'; }
154
+ static { this.PersistentTasks_Key = 'workbench.tasks.persistentTasks'; }
155
+ static { this.IgnoreTask010DonotShowAgain_key = 'workbench.tasks.ignoreTask010Shown'; }
156
+ static { this.OutputChannelId = 'tasks'; }
157
+ static { this.OutputChannelLabel = ( localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'tasks', "Tasks")); }
158
+ static { this._nextHandle = 0; }
159
+ get isReconnected() { return this._tasksReconnected; }
160
+ constructor(_configurationService, _markerService, _outputService, _paneCompositeService, _viewsService, _commandService, _editorService, _fileService, _contextService, _telemetryService, _textFileService, _modelService, _extensionService, _quickInputService, _configurationResolverService, _terminalService, _terminalGroupService, _storageService, _progressService, _openerService, _dialogService, _notificationService, _contextKeyService, _environmentService, _terminalProfileResolverService, _pathService, _textModelResolverService, _preferencesService, _viewDescriptorService, _workspaceTrustRequestService, _workspaceTrustManagementService, _logService, _themeService, _lifecycleService, remoteAgentService, _instantiationService) {
161
+ super();
162
+ this._configurationService = _configurationService;
163
+ this._markerService = _markerService;
164
+ this._outputService = _outputService;
165
+ this._paneCompositeService = _paneCompositeService;
166
+ this._viewsService = _viewsService;
167
+ this._commandService = _commandService;
168
+ this._editorService = _editorService;
169
+ this._fileService = _fileService;
170
+ this._contextService = _contextService;
171
+ this._telemetryService = _telemetryService;
172
+ this._textFileService = _textFileService;
173
+ this._modelService = _modelService;
174
+ this._extensionService = _extensionService;
175
+ this._quickInputService = _quickInputService;
176
+ this._configurationResolverService = _configurationResolverService;
177
+ this._terminalService = _terminalService;
178
+ this._terminalGroupService = _terminalGroupService;
179
+ this._storageService = _storageService;
180
+ this._progressService = _progressService;
181
+ this._openerService = _openerService;
182
+ this._dialogService = _dialogService;
183
+ this._notificationService = _notificationService;
184
+ this._contextKeyService = _contextKeyService;
185
+ this._environmentService = _environmentService;
186
+ this._terminalProfileResolverService = _terminalProfileResolverService;
187
+ this._pathService = _pathService;
188
+ this._textModelResolverService = _textModelResolverService;
189
+ this._preferencesService = _preferencesService;
190
+ this._viewDescriptorService = _viewDescriptorService;
191
+ this._workspaceTrustRequestService = _workspaceTrustRequestService;
192
+ this._workspaceTrustManagementService = _workspaceTrustManagementService;
193
+ this._logService = _logService;
194
+ this._themeService = _themeService;
195
+ this._lifecycleService = _lifecycleService;
196
+ this._instantiationService = _instantiationService;
197
+ this._tasksReconnected = false;
198
+ this._taskSystemListeners = [];
199
+ this._onDidRegisterSupportedExecutions = ( new Emitter());
200
+ this._onDidRegisterAllSupportedExecutions = ( new Emitter());
201
+ this._onDidChangeTaskSystemInfo = ( new Emitter());
202
+ this._willRestart = false;
203
+ this.onDidChangeTaskSystemInfo = this._onDidChangeTaskSystemInfo.event;
204
+ this._onDidReconnectToTasks = ( new Emitter());
205
+ this.onDidReconnectToTasks = this._onDidReconnectToTasks.event;
206
+ this._onDidChangeTaskConfig = ( new Emitter());
207
+ this.onDidChangeTaskConfig = this._onDidChangeTaskConfig.event;
208
+ this._whenTaskSystemReady = Event.toPromise(this.onDidChangeTaskSystemInfo);
209
+ this._workspaceTasksPromise = undefined;
210
+ this._taskSystem = undefined;
211
+ this._taskSystemListeners = undefined;
212
+ this._outputChannel = this._outputService.getChannel(AbstractTaskService_1.OutputChannelId);
213
+ this._providers = ( new Map());
214
+ this._providerTypes = ( new Map());
215
+ this._taskSystemInfos = ( new Map());
216
+ this._register(this._contextService.onDidChangeWorkspaceFolders(() => {
217
+ const folderSetup = this._computeWorkspaceFolderSetup();
218
+ if (this.executionEngine !== folderSetup[2]) {
219
+ this._disposeTaskSystemListeners();
220
+ this._taskSystem = undefined;
221
+ }
222
+ this._updateSetup(folderSetup);
223
+ return this._updateWorkspaceTasks(2 );
224
+ }));
225
+ this._register(this._configurationService.onDidChangeConfiguration(async (e) => {
226
+ if (!e.affectsConfiguration('tasks') || (!this._taskSystem && !this._workspaceTasksPromise)) {
227
+ return;
228
+ }
229
+ if (!this._taskSystem || this._taskSystem instanceof TerminalTaskSystem) {
230
+ this._outputChannel.clear();
231
+ }
232
+ if (e.affectsConfiguration("task.reconnection" )) {
233
+ if (!this._configurationService.getValue("task.reconnection" )) {
234
+ this._persistentTasks?.clear();
235
+ this._storageService.remove(AbstractTaskService_1.PersistentTasks_Key, 1 );
236
+ }
237
+ }
238
+ this._setTaskLRUCacheLimit();
239
+ await this._updateWorkspaceTasks(3 );
240
+ this._onDidChangeTaskConfig.fire();
241
+ }));
242
+ this._taskRunningState = TASK_RUNNING_STATE.bindTo(_contextKeyService);
243
+ this._onDidStateChange = this._register(( new Emitter()));
244
+ this._registerCommands().then(() => TaskCommandsRegistered.bindTo(this._contextKeyService).set(true));
245
+ ServerlessWebContext.bindTo(this._contextKeyService).set(isWeb && !remoteAgentService.getConnection()?.remoteAuthority);
246
+ this._configurationResolverService.contributeVariable('defaultBuildTask', async () => {
247
+ let tasks = await this._getTasksForGroup(TaskGroup.Build);
248
+ if (tasks.length > 0) {
249
+ const defaults = this._getDefaultTasks(tasks);
250
+ if (defaults.length === 1) {
251
+ return defaults[0]._label;
252
+ }
253
+ else if (defaults.length) {
254
+ tasks = defaults;
255
+ }
256
+ }
257
+ let entry;
258
+ if (tasks && tasks.length > 0) {
259
+ entry = await this._showQuickPick(tasks, ( localizeWithPath(
260
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
261
+ 'TaskService.pickBuildTaskForLabel',
262
+ 'Select the build task (there is no default build task defined)'
263
+ )));
264
+ }
265
+ const task = entry ? entry.task : undefined;
266
+ if (!task) {
267
+ return undefined;
268
+ }
269
+ return task._label;
270
+ });
271
+ this._lifecycleService.onBeforeShutdown(e => {
272
+ this._willRestart = e.reason !== 3 ;
273
+ });
274
+ this._register(this.onDidStateChange(e => {
275
+ this._log(( localizeWithPath(
276
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
277
+ 'taskEvent',
278
+ 'Task Event kind: {0}',
279
+ e.kind
280
+ )), true);
281
+ if (e.kind === "changed" ) ;
282
+ else if ((this._willRestart || (e.kind === "terminated" && e.exitReason === TerminalExitReason.User)) && e.taskId) {
283
+ const key = e.__task.getKey();
284
+ if (key) {
285
+ this.removePersistentTask(key);
286
+ }
287
+ }
288
+ else if (e.kind === "start" && e.__task && e.__task.getWorkspaceFolder()) {
289
+ this._setPersistentTask(e.__task);
290
+ }
291
+ }));
292
+ this._waitForAllSupportedExecutions = ( new Promise(resolve => {
293
+ Event.once(this._onDidRegisterAllSupportedExecutions.event)(() => resolve());
294
+ }));
295
+ if (this._terminalService.getReconnectedTerminals('Task')?.length) {
296
+ this._attemptTaskReconnection();
297
+ }
298
+ else {
299
+ this._terminalService.whenConnected.then(() => {
300
+ if (this._terminalService.getReconnectedTerminals('Task')?.length) {
301
+ this._attemptTaskReconnection();
302
+ }
303
+ else {
304
+ this._tasksReconnected = true;
305
+ this._onDidReconnectToTasks.fire();
306
+ }
307
+ });
308
+ }
309
+ this._upgrade();
310
+ }
311
+ registerSupportedExecutions(custom, shell, process) {
312
+ if (custom !== undefined) {
313
+ const customContext = CustomExecutionSupportedContext.bindTo(this._contextKeyService);
314
+ customContext.set(custom);
315
+ }
316
+ const isVirtual = !!VirtualWorkspaceContext.getValue(this._contextKeyService);
317
+ if (shell !== undefined) {
318
+ const shellContext = ShellExecutionSupportedContext.bindTo(this._contextKeyService);
319
+ shellContext.set(shell && !isVirtual);
320
+ }
321
+ if (process !== undefined) {
322
+ const processContext = ProcessExecutionSupportedContext.bindTo(this._contextKeyService);
323
+ processContext.set(process && !isVirtual);
324
+ }
325
+ this._workspaceTasksPromise = undefined;
326
+ this._onDidRegisterSupportedExecutions.fire();
327
+ if (custom && shell && process) {
328
+ this._onDidRegisterAllSupportedExecutions.fire();
329
+ }
330
+ }
331
+ _attemptTaskReconnection() {
332
+ if (this._lifecycleService.startupKind !== 3 ) {
333
+ this._log(( localizeWithPath(
334
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
335
+ 'TaskService.skippingReconnection',
336
+ 'Startup kind not window reload, setting connected and removing persistent tasks'
337
+ )), true);
338
+ this._tasksReconnected = true;
339
+ this._storageService.remove(AbstractTaskService_1.PersistentTasks_Key, 1 );
340
+ }
341
+ if (!this._configurationService.getValue("task.reconnection" ) || this._tasksReconnected) {
342
+ this._log(( localizeWithPath(
343
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
344
+ 'TaskService.notConnecting',
345
+ 'Setting tasks connected configured value {0}, tasks were already reconnected {1}',
346
+ this._configurationService.getValue("task.reconnection" ),
347
+ this._tasksReconnected
348
+ )), true);
349
+ this._tasksReconnected = true;
350
+ return;
351
+ }
352
+ this._log(( localizeWithPath(
353
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
354
+ 'TaskService.reconnecting',
355
+ 'Reconnecting to running tasks...'
356
+ )), true);
357
+ this.getWorkspaceTasks(4 ).then(async () => {
358
+ this._tasksReconnected = await this._reconnectTasks();
359
+ this._log(( localizeWithPath(
360
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
361
+ 'TaskService.reconnected',
362
+ 'Reconnected to running tasks.'
363
+ )), true);
364
+ this._onDidReconnectToTasks.fire();
365
+ });
366
+ }
367
+ async _reconnectTasks() {
368
+ const tasks = await this.getSavedTasks('persistent');
369
+ if (!tasks.length) {
370
+ this._log(( localizeWithPath(
371
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
372
+ 'TaskService.noTasks',
373
+ 'No persistent tasks to reconnect.'
374
+ )), true);
375
+ return true;
376
+ }
377
+ const taskLabels = ( tasks.map(task => task._label)).join(', ');
378
+ this._log(( localizeWithPath(
379
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
380
+ 'TaskService.reconnectingTasks',
381
+ 'Reconnecting to {0} tasks...',
382
+ taskLabels
383
+ )), true);
384
+ for (const task of tasks) {
385
+ if (ConfiguringTask.is(task)) {
386
+ const resolved = await this.tryResolveTask(task);
387
+ if (resolved) {
388
+ this.run(resolved, undefined, 4 );
389
+ }
390
+ }
391
+ else {
392
+ this.run(task, undefined, 4 );
393
+ }
394
+ }
395
+ return true;
396
+ }
397
+ get onDidStateChange() {
398
+ return this._onDidStateChange.event;
399
+ }
400
+ get supportsMultipleTaskExecutions() {
401
+ return this.inTerminal();
402
+ }
403
+ async _registerCommands() {
404
+ CommandsRegistry.registerCommand({
405
+ id: 'workbench.action.tasks.runTask',
406
+ handler: async (accessor, arg) => {
407
+ if (await this._trust()) {
408
+ await this._runTaskCommand(arg);
409
+ }
410
+ },
411
+ metadata: {
412
+ description: 'Run Task',
413
+ args: [{
414
+ name: 'args',
415
+ isOptional: true,
416
+ description: ( localizeWithPath(
417
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
418
+ 'runTask.arg',
419
+ "Filters the tasks shown in the quickpick"
420
+ )),
421
+ schema: {
422
+ anyOf: [
423
+ {
424
+ type: 'string',
425
+ description: ( localizeWithPath(
426
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
427
+ 'runTask.label',
428
+ "The task's label or a term to filter by"
429
+ ))
430
+ },
431
+ {
432
+ type: 'object',
433
+ properties: {
434
+ type: {
435
+ type: 'string',
436
+ description: ( localizeWithPath(
437
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
438
+ 'runTask.type',
439
+ "The contributed task type"
440
+ ))
441
+ },
442
+ task: {
443
+ type: 'string',
444
+ description: ( localizeWithPath(
445
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
446
+ 'runTask.task',
447
+ "The task's label or a term to filter by"
448
+ ))
449
+ }
450
+ }
451
+ }
452
+ ]
453
+ }
454
+ }]
455
+ }
456
+ });
457
+ CommandsRegistry.registerCommand('workbench.action.tasks.reRunTask', async (accessor, arg) => {
458
+ if (await this._trust()) {
459
+ this._reRunTaskCommand();
460
+ }
461
+ });
462
+ CommandsRegistry.registerCommand('workbench.action.tasks.restartTask', async (accessor, arg) => {
463
+ if (await this._trust()) {
464
+ this._runRestartTaskCommand(arg);
465
+ }
466
+ });
467
+ CommandsRegistry.registerCommand('workbench.action.tasks.terminate', async (accessor, arg) => {
468
+ if (await this._trust()) {
469
+ this._runTerminateCommand(arg);
470
+ }
471
+ });
472
+ CommandsRegistry.registerCommand('workbench.action.tasks.showLog', () => {
473
+ this._showOutput(undefined, true);
474
+ });
475
+ CommandsRegistry.registerCommand('workbench.action.tasks.build', async () => {
476
+ if (await this._trust()) {
477
+ this._runBuildCommand();
478
+ }
479
+ });
480
+ CommandsRegistry.registerCommand('workbench.action.tasks.test', async () => {
481
+ if (await this._trust()) {
482
+ this._runTestCommand();
483
+ }
484
+ });
485
+ CommandsRegistry.registerCommand('workbench.action.tasks.configureTaskRunner', async () => {
486
+ if (await this._trust()) {
487
+ this._runConfigureTasks();
488
+ }
489
+ });
490
+ CommandsRegistry.registerCommand('workbench.action.tasks.configureDefaultBuildTask', async () => {
491
+ if (await this._trust()) {
492
+ this._runConfigureDefaultBuildTask();
493
+ }
494
+ });
495
+ CommandsRegistry.registerCommand('workbench.action.tasks.configureDefaultTestTask', async () => {
496
+ if (await this._trust()) {
497
+ this._runConfigureDefaultTestTask();
498
+ }
499
+ });
500
+ CommandsRegistry.registerCommand('workbench.action.tasks.showTasks', async () => {
501
+ if (await this._trust()) {
502
+ return this.runShowTasks();
503
+ }
504
+ });
505
+ CommandsRegistry.registerCommand('workbench.action.tasks.toggleProblems', () => this._commandService.executeCommand(Markers.TOGGLE_MARKERS_VIEW_ACTION_ID));
506
+ CommandsRegistry.registerCommand('workbench.action.tasks.openUserTasks', async () => {
507
+ const resource = this._getResourceForKind(TaskSourceKind.User);
508
+ if (resource) {
509
+ this._openTaskFile(resource, TaskSourceKind.User);
510
+ }
511
+ });
512
+ CommandsRegistry.registerCommand('workbench.action.tasks.openWorkspaceFileTasks', async () => {
513
+ const resource = this._getResourceForKind(TaskSourceKind.WorkspaceFile);
514
+ if (resource) {
515
+ this._openTaskFile(resource, TaskSourceKind.WorkspaceFile);
516
+ }
517
+ });
518
+ }
519
+ get workspaceFolders() {
520
+ if (!this._workspaceFolders) {
521
+ this._updateSetup();
522
+ }
523
+ return this._workspaceFolders;
524
+ }
525
+ get ignoredWorkspaceFolders() {
526
+ if (!this._ignoredWorkspaceFolders) {
527
+ this._updateSetup();
528
+ }
529
+ return this._ignoredWorkspaceFolders;
530
+ }
531
+ get executionEngine() {
532
+ if (this._executionEngine === undefined) {
533
+ this._updateSetup();
534
+ }
535
+ return this._executionEngine;
536
+ }
537
+ get schemaVersion() {
538
+ if (this._schemaVersion === undefined) {
539
+ this._updateSetup();
540
+ }
541
+ return this._schemaVersion;
542
+ }
543
+ get showIgnoreMessage() {
544
+ if (this._showIgnoreMessage === undefined) {
545
+ this._showIgnoreMessage = !this._storageService.getBoolean(AbstractTaskService_1.IgnoreTask010DonotShowAgain_key, 1 , false);
546
+ }
547
+ return this._showIgnoreMessage;
548
+ }
549
+ _getActivationEvents(type) {
550
+ const result = [];
551
+ result.push('onCommand:workbench.action.tasks.runTask');
552
+ if (type) {
553
+ result.push(`onTaskType:${type}`);
554
+ }
555
+ else {
556
+ for (const definition of TaskDefinitionRegistry.all()) {
557
+ result.push(`onTaskType:${definition.taskType}`);
558
+ }
559
+ }
560
+ return result;
561
+ }
562
+ async _activateTaskProviders(type) {
563
+ await this._extensionService.whenInstalledExtensionsRegistered();
564
+ await raceTimeout(Promise.all(( this._getActivationEvents(type).map(activationEvent => this._extensionService.activateByEvent(activationEvent)))), 5000, () => console.warn('Timed out activating extensions for task providers'));
565
+ }
566
+ _updateSetup(setup) {
567
+ if (!setup) {
568
+ setup = this._computeWorkspaceFolderSetup();
569
+ }
570
+ this._workspaceFolders = setup[0];
571
+ if (this._ignoredWorkspaceFolders) {
572
+ if (this._ignoredWorkspaceFolders.length !== setup[1].length) {
573
+ this._showIgnoreMessage = undefined;
574
+ }
575
+ else {
576
+ const set = ( new Set());
577
+ this._ignoredWorkspaceFolders.forEach(folder => set.add(( folder.uri.toString())));
578
+ for (const folder of setup[1]) {
579
+ if (!( set.has(( folder.uri.toString())))) {
580
+ this._showIgnoreMessage = undefined;
581
+ break;
582
+ }
583
+ }
584
+ }
585
+ }
586
+ this._ignoredWorkspaceFolders = setup[1];
587
+ this._executionEngine = setup[2];
588
+ this._schemaVersion = setup[3];
589
+ this._workspace = setup[4];
590
+ }
591
+ _showOutput(runSource = 1 , userRequested) {
592
+ if (!VirtualWorkspaceContext.getValue(this._contextKeyService) && (((runSource === 1) ) || ((runSource === 3) ))) {
593
+ if (userRequested) {
594
+ this._outputService.showChannel(this._outputChannel.id, true);
595
+ }
596
+ else {
597
+ this._notificationService.prompt(Severity$1.Warning, ( localizeWithPath(
598
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
599
+ 'taskServiceOutputPrompt',
600
+ 'There are task errors. See the output for details.'
601
+ )), [{
602
+ label: ( localizeWithPath(
603
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
604
+ 'showOutput',
605
+ "Show output"
606
+ )),
607
+ run: () => {
608
+ this._outputService.showChannel(this._outputChannel.id, true);
609
+ }
610
+ }]);
611
+ }
612
+ }
613
+ }
614
+ _disposeTaskSystemListeners() {
615
+ if (this._taskSystemListeners) {
616
+ dispose(this._taskSystemListeners);
617
+ this._taskSystemListeners = undefined;
618
+ }
619
+ }
620
+ registerTaskProvider(provider, type) {
621
+ if (!provider) {
622
+ return {
623
+ dispose: () => { }
624
+ };
625
+ }
626
+ const handle = AbstractTaskService_1._nextHandle++;
627
+ this._providers.set(handle, provider);
628
+ this._providerTypes.set(handle, type);
629
+ return {
630
+ dispose: () => {
631
+ this._providers.delete(handle);
632
+ this._providerTypes.delete(handle);
633
+ }
634
+ };
635
+ }
636
+ get hasTaskSystemInfo() {
637
+ const infosCount = Array.from(( this._taskSystemInfos.values())).flat().length;
638
+ if (this._environmentService.remoteAuthority) {
639
+ return infosCount > 1;
640
+ }
641
+ return infosCount > 0;
642
+ }
643
+ registerTaskSystem(key, info) {
644
+ if (info.platform === 0 ) {
645
+ key = this.workspaceFolders.length ? this.workspaceFolders[0].uri.scheme : key;
646
+ }
647
+ if (!( this._taskSystemInfos.has(key))) {
648
+ this._taskSystemInfos.set(key, [info]);
649
+ }
650
+ else {
651
+ const infos = this._taskSystemInfos.get(key);
652
+ if (info.platform === 0 ) {
653
+ infos.push(info);
654
+ }
655
+ else {
656
+ infos.unshift(info);
657
+ }
658
+ }
659
+ if (this.hasTaskSystemInfo) {
660
+ this._onDidChangeTaskSystemInfo.fire();
661
+ }
662
+ }
663
+ _getTaskSystemInfo(key) {
664
+ const infos = this._taskSystemInfos.get(key);
665
+ return (infos && infos.length) ? infos[0] : undefined;
666
+ }
667
+ extensionCallbackTaskComplete(task, result) {
668
+ if (!this._taskSystem) {
669
+ return Promise.resolve();
670
+ }
671
+ return this._taskSystem.customExecutionComplete(task, result);
672
+ }
673
+ async _findWorkspaceTasks(predicate) {
674
+ const result = [];
675
+ const tasks = await this.getWorkspaceTasks();
676
+ for (const [, workspaceTasks] of tasks) {
677
+ if (workspaceTasks.configurations) {
678
+ for (const taskName in workspaceTasks.configurations.byIdentifier) {
679
+ const task = workspaceTasks.configurations.byIdentifier[taskName];
680
+ if (predicate(task, workspaceTasks.workspaceFolder)) {
681
+ result.push(task);
682
+ }
683
+ }
684
+ }
685
+ if (workspaceTasks.set) {
686
+ for (const task of workspaceTasks.set.tasks) {
687
+ if (predicate(task, workspaceTasks.workspaceFolder)) {
688
+ result.push(task);
689
+ }
690
+ }
691
+ }
692
+ }
693
+ return result;
694
+ }
695
+ async _findWorkspaceTasksInGroup(group, isDefault) {
696
+ return this._findWorkspaceTasks((task) => {
697
+ const taskGroup = task.configurationProperties.group;
698
+ if (taskGroup && typeof taskGroup !== 'string') {
699
+ return (taskGroup._id === group._id && (!isDefault || !!taskGroup.isDefault));
700
+ }
701
+ return false;
702
+ });
703
+ }
704
+ async getTask(folder, identifier, compareId = false, type = undefined) {
705
+ if (!(await this._trust())) {
706
+ return;
707
+ }
708
+ const name = isString(folder) ? folder : isWorkspaceFolder(folder) ? folder.name : folder.configuration ? basename(folder.configuration) : undefined;
709
+ if (( this.ignoredWorkspaceFolders.some(ignored => ignored.name === name))) {
710
+ return Promise.reject(( new Error(( localizeWithPath(
711
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
712
+ 'TaskServer.folderIgnored',
713
+ 'The folder {0} is ignored since it uses task version 0.1.0',
714
+ name
715
+ )))));
716
+ }
717
+ const key = !isString(identifier)
718
+ ? TaskDefinition.createTaskIdentifier(identifier, console)
719
+ : identifier;
720
+ if (key === undefined) {
721
+ return Promise.resolve(undefined);
722
+ }
723
+ const requestedFolder = TaskMap.getKey(folder);
724
+ const matchedTasks = await this._findWorkspaceTasks((task, workspaceFolder) => {
725
+ const taskFolder = TaskMap.getKey(workspaceFolder);
726
+ if (taskFolder !== requestedFolder && taskFolder !== USER_TASKS_GROUP_KEY) {
727
+ return false;
728
+ }
729
+ return task.matches(key, compareId);
730
+ });
731
+ matchedTasks.sort(task => task._source.kind === TaskSourceKind.Extension ? 1 : -1);
732
+ if (matchedTasks.length > 0) {
733
+ const task = matchedTasks[0];
734
+ if (ConfiguringTask.is(task)) {
735
+ return this.tryResolveTask(task);
736
+ }
737
+ else {
738
+ return task;
739
+ }
740
+ }
741
+ const map = await this._getGroupedTasks({ type });
742
+ let values = map.get(folder);
743
+ values = values.concat(map.get(USER_TASKS_GROUP_KEY));
744
+ if (!values) {
745
+ return undefined;
746
+ }
747
+ values = values.filter(task => task.matches(key, compareId)).sort(task => task._source.kind === TaskSourceKind.Extension ? 1 : -1);
748
+ return values.length > 0 ? values[0] : undefined;
749
+ }
750
+ async tryResolveTask(configuringTask) {
751
+ if (!(await this._trust())) {
752
+ return;
753
+ }
754
+ await this._activateTaskProviders(configuringTask.type);
755
+ let matchingProvider;
756
+ let matchingProviderUnavailable = false;
757
+ for (const [handle, provider] of this._providers) {
758
+ const providerType = this._providerTypes.get(handle);
759
+ if (configuringTask.type === providerType) {
760
+ if (providerType && !this._isTaskProviderEnabled(providerType)) {
761
+ matchingProviderUnavailable = true;
762
+ continue;
763
+ }
764
+ matchingProvider = provider;
765
+ break;
766
+ }
767
+ }
768
+ if (!matchingProvider) {
769
+ if (matchingProviderUnavailable) {
770
+ this._log(( localizeWithPath(
771
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
772
+ 'TaskService.providerUnavailable',
773
+ 'Warning: {0} tasks are unavailable in the current environment.',
774
+ configuringTask.configures.type
775
+ )));
776
+ }
777
+ return;
778
+ }
779
+ try {
780
+ const resolvedTask = await matchingProvider.resolveTask(configuringTask);
781
+ if (resolvedTask && (resolvedTask._id === configuringTask._id)) {
782
+ return createCustomTask(resolvedTask, configuringTask);
783
+ }
784
+ }
785
+ catch (error) {
786
+ }
787
+ const tasks = await this.tasks({ type: configuringTask.type });
788
+ for (const task of tasks) {
789
+ if (task._id === configuringTask._id) {
790
+ return createCustomTask(task, configuringTask);
791
+ }
792
+ }
793
+ return;
794
+ }
795
+ async tasks(filter) {
796
+ if (!(await this._trust())) {
797
+ return [];
798
+ }
799
+ if (!this._versionAndEngineCompatible(filter)) {
800
+ return Promise.resolve([]);
801
+ }
802
+ return this._getGroupedTasks(filter).then((map) => {
803
+ if (!filter || !filter.type) {
804
+ return map.all();
805
+ }
806
+ const result = [];
807
+ map.forEach((tasks) => {
808
+ for (const task of tasks) {
809
+ if (ContributedTask.is(task) && ((task.defines.type === filter.type) || (task._source.label === filter.type))) {
810
+ result.push(task);
811
+ }
812
+ else if (CustomTask.is(task)) {
813
+ if (task.type === filter.type) {
814
+ result.push(task);
815
+ }
816
+ else {
817
+ const customizes = task.customizes();
818
+ if (customizes && customizes.type === filter.type) {
819
+ result.push(task);
820
+ }
821
+ }
822
+ }
823
+ }
824
+ });
825
+ return result;
826
+ });
827
+ }
828
+ taskTypes() {
829
+ const types = [];
830
+ if (this._isProvideTasksEnabled()) {
831
+ for (const definition of TaskDefinitionRegistry.all()) {
832
+ if (this._isTaskProviderEnabled(definition.taskType)) {
833
+ types.push(definition.taskType);
834
+ }
835
+ }
836
+ }
837
+ return types;
838
+ }
839
+ createSorter() {
840
+ return ( new TaskSorter(
841
+ this._contextService.getWorkspace() ? this._contextService.getWorkspace().folders : []
842
+ ));
843
+ }
844
+ _isActive() {
845
+ if (!this._taskSystem) {
846
+ return Promise.resolve(false);
847
+ }
848
+ return this._taskSystem.isActive();
849
+ }
850
+ async getActiveTasks() {
851
+ if (!this._taskSystem) {
852
+ return [];
853
+ }
854
+ return this._taskSystem.getActiveTasks();
855
+ }
856
+ async getBusyTasks() {
857
+ if (!this._taskSystem) {
858
+ return [];
859
+ }
860
+ return this._taskSystem.getBusyTasks();
861
+ }
862
+ getRecentlyUsedTasksV1() {
863
+ if (this._recentlyUsedTasksV1) {
864
+ return this._recentlyUsedTasksV1;
865
+ }
866
+ const quickOpenHistoryLimit = this._configurationService.getValue(QUICKOPEN_HISTORY_LIMIT_CONFIG);
867
+ this._recentlyUsedTasksV1 = ( new LRUCache(quickOpenHistoryLimit));
868
+ const storageValue = this._storageService.get(AbstractTaskService_1.RecentlyUsedTasks_Key, 1 );
869
+ if (storageValue) {
870
+ try {
871
+ const values = JSON.parse(storageValue);
872
+ if (Array.isArray(values)) {
873
+ for (const value of values) {
874
+ this._recentlyUsedTasksV1.set(value, value);
875
+ }
876
+ }
877
+ }
878
+ catch (error) {
879
+ }
880
+ }
881
+ return this._recentlyUsedTasksV1;
882
+ }
883
+ _getTasksFromStorage(type) {
884
+ return type === 'persistent' ? this._getPersistentTasks() : this._getRecentTasks();
885
+ }
886
+ _getRecentTasks() {
887
+ if (this._recentlyUsedTasks) {
888
+ return this._recentlyUsedTasks;
889
+ }
890
+ const quickOpenHistoryLimit = this._configurationService.getValue(QUICKOPEN_HISTORY_LIMIT_CONFIG);
891
+ this._recentlyUsedTasks = ( new LRUCache(quickOpenHistoryLimit));
892
+ const storageValue = this._storageService.get(AbstractTaskService_1.RecentlyUsedTasks_KeyV2, 1 );
893
+ if (storageValue) {
894
+ try {
895
+ const values = JSON.parse(storageValue);
896
+ if (Array.isArray(values)) {
897
+ for (const value of values) {
898
+ this._recentlyUsedTasks.set(value[0], value[1]);
899
+ }
900
+ }
901
+ }
902
+ catch (error) {
903
+ }
904
+ }
905
+ return this._recentlyUsedTasks;
906
+ }
907
+ _getPersistentTasks() {
908
+ if (this._persistentTasks) {
909
+ this._log(( localizeWithPath(
910
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
911
+ 'taskService.gettingCachedTasks',
912
+ 'Returning cached tasks {0}',
913
+ this._persistentTasks.size
914
+ )), true);
915
+ return this._persistentTasks;
916
+ }
917
+ this._persistentTasks = ( new LRUCache(10));
918
+ const storageValue = this._storageService.get(AbstractTaskService_1.PersistentTasks_Key, 1 );
919
+ if (storageValue) {
920
+ try {
921
+ const values = JSON.parse(storageValue);
922
+ if (Array.isArray(values)) {
923
+ for (const value of values) {
924
+ this._persistentTasks.set(value[0], value[1]);
925
+ }
926
+ }
927
+ }
928
+ catch (error) {
929
+ }
930
+ }
931
+ return this._persistentTasks;
932
+ }
933
+ _getFolderFromTaskKey(key) {
934
+ const keyValue = JSON.parse(key);
935
+ return {
936
+ folder: keyValue.folder, isWorkspaceFile: keyValue.id?.endsWith(TaskSourceKind.WorkspaceFile)
937
+ };
938
+ }
939
+ async getSavedTasks(type) {
940
+ const folderMap = Object.create(null);
941
+ this.workspaceFolders.forEach(folder => {
942
+ folderMap[( folder.uri.toString())] = folder;
943
+ });
944
+ const folderToTasksMap = ( new Map());
945
+ const workspaceToTaskMap = ( new Map());
946
+ const storedTasks = this._getTasksFromStorage(type);
947
+ const tasks = [];
948
+ this._log(( localizeWithPath(
949
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
950
+ 'taskService.getSavedTasks',
951
+ 'Fetching tasks from task storage.'
952
+ )), true);
953
+ function addTaskToMap(map, folder, task) {
954
+ if (folder && !( map.has(folder))) {
955
+ map.set(folder, []);
956
+ }
957
+ if (folder && (folderMap[folder] || (folder === USER_TASKS_GROUP_KEY)) && task) {
958
+ map.get(folder).push(task);
959
+ }
960
+ }
961
+ for (const entry of storedTasks.entries()) {
962
+ try {
963
+ const key = entry[0];
964
+ const task = JSON.parse(entry[1]);
965
+ const folderInfo = this._getFolderFromTaskKey(key);
966
+ this._log(( localizeWithPath(
967
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
968
+ 'taskService.getSavedTasks.reading',
969
+ 'Reading tasks from task storage, {0}, {1}, {2}',
970
+ key,
971
+ task,
972
+ folderInfo.folder
973
+ )), true);
974
+ addTaskToMap(folderInfo.isWorkspaceFile ? workspaceToTaskMap : folderToTasksMap, folderInfo.folder, task);
975
+ }
976
+ catch (error) {
977
+ this._log(( localizeWithPath(
978
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
979
+ 'taskService.getSavedTasks.error',
980
+ 'Fetching a task from task storage failed: {0}.',
981
+ error
982
+ )), true);
983
+ }
984
+ }
985
+ const readTasksMap = ( new Map());
986
+ async function readTasks(that, map, isWorkspaceFile) {
987
+ for (const key of ( map.keys())) {
988
+ const custom = [];
989
+ const customized = Object.create(null);
990
+ const taskConfigSource = (folderMap[key]
991
+ ? (isWorkspaceFile
992
+ ? TaskConfigSource.WorkspaceFile : TaskConfigSource.TasksJson)
993
+ : TaskConfigSource.User);
994
+ await that._computeTasksForSingleConfig(folderMap[key] ?? (await that._getAFolder()), {
995
+ version: '2.0.0',
996
+ tasks: map.get(key)
997
+ }, 0 , custom, customized, taskConfigSource, true);
998
+ custom.forEach(task => {
999
+ const taskKey = task.getKey();
1000
+ if (taskKey) {
1001
+ readTasksMap.set(taskKey, task);
1002
+ }
1003
+ });
1004
+ for (const configuration in customized) {
1005
+ const taskKey = customized[configuration].getKey();
1006
+ if (taskKey) {
1007
+ readTasksMap.set(taskKey, customized[configuration]);
1008
+ }
1009
+ }
1010
+ }
1011
+ }
1012
+ await readTasks(this, folderToTasksMap, false);
1013
+ await readTasks(this, workspaceToTaskMap, true);
1014
+ for (const key of ( storedTasks.keys())) {
1015
+ if (( readTasksMap.has(key))) {
1016
+ tasks.push(readTasksMap.get(key));
1017
+ this._log(( localizeWithPath(
1018
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1019
+ 'taskService.getSavedTasks.resolved',
1020
+ 'Resolved task {0}',
1021
+ key
1022
+ )), true);
1023
+ }
1024
+ else {
1025
+ this._log(( localizeWithPath(
1026
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1027
+ 'taskService.getSavedTasks.unresolved',
1028
+ 'Unable to resolve task {0} ',
1029
+ key
1030
+ )), true);
1031
+ }
1032
+ }
1033
+ return tasks;
1034
+ }
1035
+ removeRecentlyUsedTask(taskRecentlyUsedKey) {
1036
+ if (( this._getTasksFromStorage('historical').has(taskRecentlyUsedKey))) {
1037
+ this._getTasksFromStorage('historical').delete(taskRecentlyUsedKey);
1038
+ this._saveRecentlyUsedTasks();
1039
+ }
1040
+ }
1041
+ removePersistentTask(key) {
1042
+ this._log(( localizeWithPath(
1043
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1044
+ 'taskService.removePersistentTask',
1045
+ 'Removing persistent task {0}',
1046
+ key
1047
+ )), true);
1048
+ if (( this._getTasksFromStorage('persistent').has(key))) {
1049
+ this._getTasksFromStorage('persistent').delete(key);
1050
+ this._savePersistentTasks();
1051
+ }
1052
+ }
1053
+ _setTaskLRUCacheLimit() {
1054
+ const quickOpenHistoryLimit = this._configurationService.getValue(QUICKOPEN_HISTORY_LIMIT_CONFIG);
1055
+ if (this._recentlyUsedTasks) {
1056
+ this._recentlyUsedTasks.limit = quickOpenHistoryLimit;
1057
+ }
1058
+ }
1059
+ async _setRecentlyUsedTask(task) {
1060
+ let key = task.getKey();
1061
+ if (!InMemoryTask.is(task) && key) {
1062
+ const customizations = this._createCustomizableTask(task);
1063
+ if (ContributedTask.is(task) && customizations) {
1064
+ const custom = [];
1065
+ const customized = Object.create(null);
1066
+ await this._computeTasksForSingleConfig(task._source.workspaceFolder ?? this.workspaceFolders[0], {
1067
+ version: '2.0.0',
1068
+ tasks: [customizations]
1069
+ }, 0 , custom, customized, TaskConfigSource.TasksJson, true);
1070
+ for (const configuration in customized) {
1071
+ key = customized[configuration].getKey();
1072
+ }
1073
+ }
1074
+ this._getTasksFromStorage('historical').set(key, JSON.stringify(customizations));
1075
+ this._saveRecentlyUsedTasks();
1076
+ }
1077
+ }
1078
+ _saveRecentlyUsedTasks() {
1079
+ if (!this._recentlyUsedTasks) {
1080
+ return;
1081
+ }
1082
+ const quickOpenHistoryLimit = this._configurationService.getValue(QUICKOPEN_HISTORY_LIMIT_CONFIG);
1083
+ if (quickOpenHistoryLimit === 0) {
1084
+ return;
1085
+ }
1086
+ let keys = [...( this._recentlyUsedTasks.keys())];
1087
+ if (keys.length > quickOpenHistoryLimit) {
1088
+ keys = keys.slice(0, quickOpenHistoryLimit);
1089
+ }
1090
+ const keyValues = [];
1091
+ for (const key of keys) {
1092
+ keyValues.push([key, this._recentlyUsedTasks.get(key, 0 )]);
1093
+ }
1094
+ this._storageService.store(AbstractTaskService_1.RecentlyUsedTasks_KeyV2, JSON.stringify(keyValues), 1 , 1 );
1095
+ }
1096
+ async _setPersistentTask(task) {
1097
+ if (!this._configurationService.getValue("task.reconnection" )) {
1098
+ return;
1099
+ }
1100
+ let key = task.getKey();
1101
+ if (!InMemoryTask.is(task) && key) {
1102
+ const customizations = this._createCustomizableTask(task);
1103
+ if (ContributedTask.is(task) && customizations) {
1104
+ const custom = [];
1105
+ const customized = Object.create(null);
1106
+ await this._computeTasksForSingleConfig(task._source.workspaceFolder ?? this.workspaceFolders[0], {
1107
+ version: '2.0.0',
1108
+ tasks: [customizations]
1109
+ }, 0 , custom, customized, TaskConfigSource.TasksJson, true);
1110
+ for (const configuration in customized) {
1111
+ key = customized[configuration].getKey();
1112
+ }
1113
+ }
1114
+ if (!task.configurationProperties.isBackground) {
1115
+ return;
1116
+ }
1117
+ this._log(( localizeWithPath(
1118
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1119
+ 'taskService.setPersistentTask',
1120
+ 'Setting persistent task {0}',
1121
+ key
1122
+ )), true);
1123
+ this._getTasksFromStorage('persistent').set(key, JSON.stringify(customizations));
1124
+ this._savePersistentTasks();
1125
+ }
1126
+ }
1127
+ _savePersistentTasks() {
1128
+ this._persistentTasks = this._getTasksFromStorage('persistent');
1129
+ const keys = [...( this._persistentTasks.keys())];
1130
+ const keyValues = [];
1131
+ for (const key of keys) {
1132
+ keyValues.push([key, this._persistentTasks.get(key, 0 )]);
1133
+ }
1134
+ this._log(( localizeWithPath(
1135
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1136
+ 'savePersistentTask',
1137
+ 'Saving persistent tasks: {0}',
1138
+ keys.join(', ')
1139
+ )), true);
1140
+ this._storageService.store(AbstractTaskService_1.PersistentTasks_Key, JSON.stringify(keyValues), 1 , 1 );
1141
+ }
1142
+ _openDocumentation() {
1143
+ this._openerService.open(( URI.parse(
1144
+ 'https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher'
1145
+ )));
1146
+ }
1147
+ async _findSingleWorkspaceTaskOfGroup(group) {
1148
+ const tasksOfGroup = await this._findWorkspaceTasksInGroup(group, true);
1149
+ if ((tasksOfGroup.length === 1) && (typeof tasksOfGroup[0].configurationProperties.group !== 'string') && tasksOfGroup[0].configurationProperties.group?.isDefault) {
1150
+ let resolvedTask;
1151
+ if (ConfiguringTask.is(tasksOfGroup[0])) {
1152
+ resolvedTask = await this.tryResolveTask(tasksOfGroup[0]);
1153
+ }
1154
+ else {
1155
+ resolvedTask = tasksOfGroup[0];
1156
+ }
1157
+ if (resolvedTask) {
1158
+ return this.run(resolvedTask, undefined, 1 );
1159
+ }
1160
+ }
1161
+ return undefined;
1162
+ }
1163
+ async _build() {
1164
+ const tryBuildShortcut = await this._findSingleWorkspaceTaskOfGroup(TaskGroup.Build);
1165
+ if (tryBuildShortcut) {
1166
+ return tryBuildShortcut;
1167
+ }
1168
+ return this._getGroupedTasksAndExecute();
1169
+ }
1170
+ async _runTest() {
1171
+ const tryTestShortcut = await this._findSingleWorkspaceTaskOfGroup(TaskGroup.Test);
1172
+ if (tryTestShortcut) {
1173
+ return tryTestShortcut;
1174
+ }
1175
+ return this._getGroupedTasksAndExecute(true);
1176
+ }
1177
+ async _getGroupedTasksAndExecute(test) {
1178
+ const tasks = await this._getGroupedTasks();
1179
+ const runnable = this._createRunnableTask(tasks, test ? TaskGroup.Test : TaskGroup.Build);
1180
+ if (!runnable || !runnable.task) {
1181
+ if (test) {
1182
+ if (this.schemaVersion === 1 ) {
1183
+ throw new TaskError(Severity$1.Info, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskService.noTestTask1', 'No test task defined. Mark a task with \'isTestCommand\' in the tasks.json file.'), 3 );
1184
+ }
1185
+ else {
1186
+ throw new TaskError(Severity$1.Info, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskService.noTestTask2', 'No test task defined. Mark a task with as a \'test\' group in the tasks.json file.'), 3 );
1187
+ }
1188
+ }
1189
+ else {
1190
+ if (this.schemaVersion === 1 ) {
1191
+ throw new TaskError(Severity$1.Info, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskService.noBuildTask1', 'No build task defined. Mark a task with \'isBuildCommand\' in the tasks.json file.'), 2 );
1192
+ }
1193
+ else {
1194
+ throw new TaskError(Severity$1.Info, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskService.noBuildTask2', 'No build task defined. Mark a task with as a \'build\' group in the tasks.json file.'), 2 );
1195
+ }
1196
+ }
1197
+ }
1198
+ let executeTaskResult;
1199
+ try {
1200
+ executeTaskResult = await this._executeTask(runnable.task, runnable.resolver, 1 );
1201
+ }
1202
+ catch (error) {
1203
+ this._handleError(error);
1204
+ return Promise.reject(error);
1205
+ }
1206
+ return executeTaskResult;
1207
+ }
1208
+ async run(task, options, runSource = 0 ) {
1209
+ if (!(await this._trust())) {
1210
+ return;
1211
+ }
1212
+ if (!task) {
1213
+ throw new TaskError(Severity$1.Info, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskServer.noTask', 'Task to execute is undefined'), 5 );
1214
+ }
1215
+ const resolver = this._createResolver();
1216
+ let executeTaskResult;
1217
+ try {
1218
+ if (options && options.attachProblemMatcher && this._shouldAttachProblemMatcher(task) && !InMemoryTask.is(task)) {
1219
+ const taskToExecute = await this._attachProblemMatcher(task);
1220
+ if (taskToExecute) {
1221
+ executeTaskResult = await this._executeTask(taskToExecute, resolver, runSource);
1222
+ }
1223
+ }
1224
+ else {
1225
+ executeTaskResult = await this._executeTask(task, resolver, runSource);
1226
+ }
1227
+ return executeTaskResult;
1228
+ }
1229
+ catch (error) {
1230
+ this._handleError(error);
1231
+ return Promise.reject(error);
1232
+ }
1233
+ }
1234
+ _isProvideTasksEnabled() {
1235
+ const settingValue = this._configurationService.getValue("task.autoDetect" );
1236
+ return settingValue === 'on';
1237
+ }
1238
+ _isProblemMatcherPromptEnabled(type) {
1239
+ const settingValue = this._configurationService.getValue(PROBLEM_MATCHER_NEVER_CONFIG);
1240
+ if (isBoolean(settingValue)) {
1241
+ return !settingValue;
1242
+ }
1243
+ if (type === undefined) {
1244
+ return true;
1245
+ }
1246
+ const settingValueMap = settingValue;
1247
+ return !settingValueMap[type];
1248
+ }
1249
+ _getTypeForTask(task) {
1250
+ let type;
1251
+ if (CustomTask.is(task)) {
1252
+ const configProperties = task._source.config.element;
1253
+ type = configProperties.type;
1254
+ }
1255
+ else {
1256
+ type = task.getDefinition().type;
1257
+ }
1258
+ return type;
1259
+ }
1260
+ _shouldAttachProblemMatcher(task) {
1261
+ const enabled = this._isProblemMatcherPromptEnabled(this._getTypeForTask(task));
1262
+ if (enabled === false) {
1263
+ return false;
1264
+ }
1265
+ if (!this._canCustomize(task)) {
1266
+ return false;
1267
+ }
1268
+ if (task.configurationProperties.group !== undefined && task.configurationProperties.group !== TaskGroup.Build) {
1269
+ return false;
1270
+ }
1271
+ if (task.configurationProperties.problemMatchers !== undefined && task.configurationProperties.problemMatchers.length > 0) {
1272
+ return false;
1273
+ }
1274
+ if (ContributedTask.is(task)) {
1275
+ return !task.hasDefinedMatchers && !!task.configurationProperties.problemMatchers && (task.configurationProperties.problemMatchers.length === 0);
1276
+ }
1277
+ if (CustomTask.is(task)) {
1278
+ const configProperties = task._source.config.element;
1279
+ return configProperties.problemMatcher === undefined && !task.hasDefinedMatchers;
1280
+ }
1281
+ return false;
1282
+ }
1283
+ async _updateNeverProblemMatcherSetting(type) {
1284
+ const current = this._configurationService.getValue(PROBLEM_MATCHER_NEVER_CONFIG);
1285
+ if (current === true) {
1286
+ return;
1287
+ }
1288
+ let newValue;
1289
+ if (current !== false) {
1290
+ newValue = current;
1291
+ }
1292
+ else {
1293
+ newValue = Object.create(null);
1294
+ }
1295
+ newValue[type] = true;
1296
+ return this._configurationService.updateValue(PROBLEM_MATCHER_NEVER_CONFIG, newValue);
1297
+ }
1298
+ async _attachProblemMatcher(task) {
1299
+ let entries = [];
1300
+ for (const key of ( ProblemMatcherRegistry.keys())) {
1301
+ const matcher = ProblemMatcherRegistry.get(key);
1302
+ if (matcher.deprecated) {
1303
+ continue;
1304
+ }
1305
+ if (matcher.name === matcher.label) {
1306
+ entries.push({ label: matcher.name, matcher: matcher });
1307
+ }
1308
+ else {
1309
+ entries.push({
1310
+ label: matcher.label,
1311
+ description: `$${matcher.name}`,
1312
+ matcher: matcher
1313
+ });
1314
+ }
1315
+ }
1316
+ if (entries.length === 0) {
1317
+ return;
1318
+ }
1319
+ entries = entries.sort((a, b) => {
1320
+ if (a.label && b.label) {
1321
+ return a.label.localeCompare(b.label);
1322
+ }
1323
+ else {
1324
+ return 0;
1325
+ }
1326
+ });
1327
+ entries.unshift({ type: 'separator', label: ( localizeWithPath(
1328
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1329
+ 'TaskService.associate',
1330
+ 'associate'
1331
+ )) });
1332
+ let taskType;
1333
+ if (CustomTask.is(task)) {
1334
+ const configProperties = task._source.config.element;
1335
+ taskType = configProperties.type;
1336
+ }
1337
+ else {
1338
+ taskType = task.getDefinition().type;
1339
+ }
1340
+ entries.unshift({ label: ( localizeWithPath(
1341
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1342
+ 'TaskService.attachProblemMatcher.continueWithout',
1343
+ 'Continue without scanning the task output'
1344
+ )), matcher: undefined }, { label: ( localizeWithPath(
1345
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1346
+ 'TaskService.attachProblemMatcher.never',
1347
+ 'Never scan the task output for this task'
1348
+ )), matcher: undefined, never: true }, { label: ( localizeWithPath(
1349
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1350
+ 'TaskService.attachProblemMatcher.neverType',
1351
+ 'Never scan the task output for {0} tasks',
1352
+ taskType
1353
+ )), matcher: undefined, setting: taskType }, { label: ( localizeWithPath(
1354
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1355
+ 'TaskService.attachProblemMatcher.learnMoreAbout',
1356
+ 'Learn more about scanning the task output'
1357
+ )), matcher: undefined, learnMore: true });
1358
+ const problemMatcher = await this._quickInputService.pick(entries, { placeHolder: ( localizeWithPath(
1359
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1360
+ 'selectProblemMatcher',
1361
+ 'Select for which kind of errors and warnings to scan the task output'
1362
+ )) });
1363
+ if (!problemMatcher) {
1364
+ return task;
1365
+ }
1366
+ if (problemMatcher.learnMore) {
1367
+ this._openDocumentation();
1368
+ return undefined;
1369
+ }
1370
+ if (problemMatcher.never) {
1371
+ this.customize(task, { problemMatcher: [] }, true);
1372
+ return task;
1373
+ }
1374
+ if (problemMatcher.matcher) {
1375
+ const newTask = task.clone();
1376
+ const matcherReference = `$${problemMatcher.matcher.name}`;
1377
+ const properties = { problemMatcher: [matcherReference] };
1378
+ newTask.configurationProperties.problemMatchers = [matcherReference];
1379
+ const matcher = ProblemMatcherRegistry.get(problemMatcher.matcher.name);
1380
+ if (matcher && matcher.watching !== undefined) {
1381
+ properties.isBackground = true;
1382
+ newTask.configurationProperties.isBackground = true;
1383
+ }
1384
+ this.customize(task, properties, true);
1385
+ return newTask;
1386
+ }
1387
+ if (problemMatcher.setting) {
1388
+ await this._updateNeverProblemMatcherSetting(problemMatcher.setting);
1389
+ }
1390
+ return task;
1391
+ }
1392
+ async _getTasksForGroup(group) {
1393
+ const groups = await this._getGroupedTasks();
1394
+ const result = [];
1395
+ groups.forEach(tasks => {
1396
+ for (const task of tasks) {
1397
+ const configTaskGroup = TaskGroup.from(task.configurationProperties.group);
1398
+ if (configTaskGroup?._id === group._id) {
1399
+ result.push(task);
1400
+ }
1401
+ }
1402
+ });
1403
+ return result;
1404
+ }
1405
+ needsFolderQualification() {
1406
+ return this._contextService.getWorkbenchState() === 3 ;
1407
+ }
1408
+ _canCustomize(task) {
1409
+ if (this.schemaVersion !== 2 ) {
1410
+ return false;
1411
+ }
1412
+ if (CustomTask.is(task)) {
1413
+ return true;
1414
+ }
1415
+ if (ContributedTask.is(task)) {
1416
+ return !!task.getWorkspaceFolder();
1417
+ }
1418
+ return false;
1419
+ }
1420
+ async _formatTaskForJson(resource, task) {
1421
+ let reference;
1422
+ let stringValue = '';
1423
+ try {
1424
+ reference = await this._textModelResolverService.createModelReference(resource);
1425
+ const model = reference.object.textEditorModel;
1426
+ const { tabSize, insertSpaces } = model.getOptions();
1427
+ const eol = model.getEOL();
1428
+ let stringified = toFormattedString(task, { eol, tabSize, insertSpaces });
1429
+ const regex = ( new RegExp(eol + (insertSpaces ? ' '.repeat(tabSize) : '\\t'), 'g'));
1430
+ stringified = stringified.replace(regex, eol + (insertSpaces ? ' '.repeat(tabSize * 3) : '\t\t\t'));
1431
+ const twoTabs = insertSpaces ? ' '.repeat(tabSize * 2) : '\t\t';
1432
+ stringValue = twoTabs + stringified.slice(0, stringified.length - 1) + twoTabs + stringified.slice(stringified.length - 1);
1433
+ }
1434
+ finally {
1435
+ reference?.dispose();
1436
+ }
1437
+ return stringValue;
1438
+ }
1439
+ async _openEditorAtTask(resource, task, configIndex = -1) {
1440
+ if (resource === undefined) {
1441
+ return Promise.resolve(false);
1442
+ }
1443
+ const fileContent = await this._fileService.readFile(resource);
1444
+ const content = fileContent.value;
1445
+ if (!content || !task) {
1446
+ return false;
1447
+ }
1448
+ const contentValue = ( content.toString());
1449
+ let stringValue;
1450
+ if (configIndex !== -1) {
1451
+ const json = this._configurationService.getValue('tasks', { resource });
1452
+ if (json.tasks && (json.tasks.length > configIndex)) {
1453
+ stringValue = await this._formatTaskForJson(resource, json.tasks[configIndex]);
1454
+ }
1455
+ }
1456
+ if (!stringValue) {
1457
+ if (typeof task === 'string') {
1458
+ stringValue = task;
1459
+ }
1460
+ else {
1461
+ stringValue = await this._formatTaskForJson(resource, task);
1462
+ }
1463
+ }
1464
+ const index = contentValue.indexOf(stringValue);
1465
+ let startLineNumber = 1;
1466
+ for (let i = 0; i < index; i++) {
1467
+ if (contentValue.charAt(i) === '\n') {
1468
+ startLineNumber++;
1469
+ }
1470
+ }
1471
+ let endLineNumber = startLineNumber;
1472
+ for (let i = 0; i < stringValue.length; i++) {
1473
+ if (stringValue.charAt(i) === '\n') {
1474
+ endLineNumber++;
1475
+ }
1476
+ }
1477
+ const selection = startLineNumber > 1 ? { startLineNumber, startColumn: startLineNumber === endLineNumber ? 4 : 3, endLineNumber, endColumn: startLineNumber === endLineNumber ? undefined : 4 } : undefined;
1478
+ await this._editorService.openEditor({
1479
+ resource,
1480
+ options: {
1481
+ pinned: false,
1482
+ forceReload: true,
1483
+ selection,
1484
+ selectionRevealType: 1
1485
+ }
1486
+ });
1487
+ return !!selection;
1488
+ }
1489
+ _createCustomizableTask(task) {
1490
+ let toCustomize;
1491
+ const taskConfig = CustomTask.is(task) || ConfiguringTask.is(task) ? task._source.config : undefined;
1492
+ if (taskConfig && taskConfig.element) {
1493
+ toCustomize = { ...(taskConfig.element) };
1494
+ }
1495
+ else if (ContributedTask.is(task)) {
1496
+ toCustomize = {};
1497
+ const identifier = Object.assign(Object.create(null), task.defines);
1498
+ delete identifier['_key'];
1499
+ ( Object.keys(identifier)).forEach(key => toCustomize[key] = identifier[key]);
1500
+ if (task.configurationProperties.problemMatchers && task.configurationProperties.problemMatchers.length > 0 && isStringArray(task.configurationProperties.problemMatchers)) {
1501
+ toCustomize.problemMatcher = task.configurationProperties.problemMatchers;
1502
+ }
1503
+ if (task.configurationProperties.group) {
1504
+ toCustomize.group = GroupKind.to(task.configurationProperties.group);
1505
+ }
1506
+ }
1507
+ if (!toCustomize) {
1508
+ return undefined;
1509
+ }
1510
+ if (toCustomize.problemMatcher === undefined && task.configurationProperties.problemMatchers === undefined || (task.configurationProperties.problemMatchers && task.configurationProperties.problemMatchers.length === 0)) {
1511
+ toCustomize.problemMatcher = [];
1512
+ }
1513
+ if (task._source.label !== 'Workspace') {
1514
+ toCustomize.label = task.configurationProperties.identifier;
1515
+ }
1516
+ else {
1517
+ toCustomize.label = task._label;
1518
+ }
1519
+ toCustomize.detail = task.configurationProperties.detail;
1520
+ return toCustomize;
1521
+ }
1522
+ async customize(task, properties, openConfig) {
1523
+ if (!(await this._trust())) {
1524
+ return;
1525
+ }
1526
+ const workspaceFolder = task.getWorkspaceFolder();
1527
+ if (!workspaceFolder) {
1528
+ return Promise.resolve(undefined);
1529
+ }
1530
+ const configuration = this._getConfiguration(workspaceFolder, task._source.kind);
1531
+ if (configuration.hasParseErrors) {
1532
+ this._notificationService.warn(( localizeWithPath(
1533
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1534
+ 'customizeParseErrors',
1535
+ 'The current task configuration has errors. Please fix the errors first before customizing a task.'
1536
+ )));
1537
+ return Promise.resolve(undefined);
1538
+ }
1539
+ const fileConfig = configuration.config;
1540
+ const toCustomize = this._createCustomizableTask(task);
1541
+ if (!toCustomize) {
1542
+ return Promise.resolve(undefined);
1543
+ }
1544
+ const index = CustomTask.is(task) ? task._source.config.index : undefined;
1545
+ if (properties) {
1546
+ for (const property of Object.getOwnPropertyNames(properties)) {
1547
+ const value = properties[property];
1548
+ if (value !== undefined && value !== null) {
1549
+ toCustomize[property] = value;
1550
+ }
1551
+ }
1552
+ }
1553
+ if (!fileConfig) {
1554
+ const value = {
1555
+ version: '2.0.0',
1556
+ tasks: [toCustomize]
1557
+ };
1558
+ let content = [
1559
+ '{',
1560
+ ( localizeWithPath(
1561
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1562
+ 'tasksJsonComment',
1563
+ '\t// See https://go.microsoft.com/fwlink/?LinkId=733558 \n\t// for the documentation about the tasks.json format'
1564
+ )),
1565
+ ].join('\n') + JSON.stringify(value, null, '\t').substr(1);
1566
+ const editorConfig = this._configurationService.getValue();
1567
+ if (editorConfig.editor.insertSpaces) {
1568
+ content = content.replace(/(\n)(\t+)/g, (_, s1, s2) => s1 + ' '.repeat(s2.length * editorConfig.editor.tabSize));
1569
+ }
1570
+ await this._textFileService.create([{ resource: workspaceFolder.toResource('.vscode/tasks.json'), value: content }]);
1571
+ }
1572
+ else {
1573
+ if ((index === -1) && properties) {
1574
+ if (properties.problemMatcher !== undefined) {
1575
+ fileConfig.problemMatcher = properties.problemMatcher;
1576
+ await this._writeConfiguration(workspaceFolder, 'tasks.problemMatchers', fileConfig.problemMatcher, task._source.kind);
1577
+ }
1578
+ else if (properties.group !== undefined) {
1579
+ fileConfig.group = properties.group;
1580
+ await this._writeConfiguration(workspaceFolder, 'tasks.group', fileConfig.group, task._source.kind);
1581
+ }
1582
+ }
1583
+ else {
1584
+ if (!Array.isArray(fileConfig.tasks)) {
1585
+ fileConfig.tasks = [];
1586
+ }
1587
+ if (index === undefined) {
1588
+ fileConfig.tasks.push(toCustomize);
1589
+ }
1590
+ else {
1591
+ fileConfig.tasks[index] = toCustomize;
1592
+ }
1593
+ await this._writeConfiguration(workspaceFolder, 'tasks.tasks', fileConfig.tasks, task._source.kind);
1594
+ }
1595
+ }
1596
+ if (openConfig) {
1597
+ this._openEditorAtTask(this._getResourceForTask(task), toCustomize);
1598
+ }
1599
+ }
1600
+ _writeConfiguration(workspaceFolder, key, value, source) {
1601
+ let target = undefined;
1602
+ switch (source) {
1603
+ case TaskSourceKind.User:
1604
+ target = 2 ;
1605
+ break;
1606
+ case TaskSourceKind.WorkspaceFile:
1607
+ target = 5 ;
1608
+ break;
1609
+ default: if (this._contextService.getWorkbenchState() === 2 ) {
1610
+ target = 5 ;
1611
+ }
1612
+ else if (this._contextService.getWorkbenchState() === 3 ) {
1613
+ target = 6 ;
1614
+ }
1615
+ }
1616
+ if (target) {
1617
+ return this._configurationService.updateValue(key, value, { resource: workspaceFolder.uri }, target);
1618
+ }
1619
+ else {
1620
+ return undefined;
1621
+ }
1622
+ }
1623
+ _getResourceForKind(kind) {
1624
+ this._updateSetup();
1625
+ switch (kind) {
1626
+ case TaskSourceKind.User: {
1627
+ return joinPath(dirname(this._preferencesService.userSettingsResource), 'tasks.json');
1628
+ }
1629
+ case TaskSourceKind.WorkspaceFile: {
1630
+ if (this._workspace && this._workspace.configuration) {
1631
+ return this._workspace.configuration;
1632
+ }
1633
+ }
1634
+ default: {
1635
+ return undefined;
1636
+ }
1637
+ }
1638
+ }
1639
+ _getResourceForTask(task) {
1640
+ if (CustomTask.is(task)) {
1641
+ let uri = this._getResourceForKind(task._source.kind);
1642
+ if (!uri) {
1643
+ const taskFolder = task.getWorkspaceFolder();
1644
+ if (taskFolder) {
1645
+ uri = taskFolder.toResource(task._source.config.file);
1646
+ }
1647
+ else {
1648
+ uri = this.workspaceFolders[0].uri;
1649
+ }
1650
+ }
1651
+ return uri;
1652
+ }
1653
+ else {
1654
+ return task.getWorkspaceFolder().toResource('.vscode/tasks.json');
1655
+ }
1656
+ }
1657
+ async openConfig(task) {
1658
+ let resource;
1659
+ if (task) {
1660
+ resource = this._getResourceForTask(task);
1661
+ }
1662
+ else {
1663
+ resource = (this._workspaceFolders && (this._workspaceFolders.length > 0)) ? this._workspaceFolders[0].toResource('.vscode/tasks.json') : undefined;
1664
+ }
1665
+ return this._openEditorAtTask(resource, task ? task._label : undefined, task ? task._source.config.index : -1);
1666
+ }
1667
+ _createRunnableTask(tasks, group) {
1668
+ const resolverData = ( new Map());
1669
+ const workspaceTasks = [];
1670
+ const extensionTasks = [];
1671
+ tasks.forEach((tasks, folder) => {
1672
+ let data = resolverData.get(folder);
1673
+ if (!data) {
1674
+ data = {
1675
+ id: ( new Map()),
1676
+ label: ( new Map()),
1677
+ identifier: ( new Map())
1678
+ };
1679
+ resolverData.set(folder, data);
1680
+ }
1681
+ for (const task of tasks) {
1682
+ data.id.set(task._id, task);
1683
+ data.label.set(task._label, task);
1684
+ if (task.configurationProperties.identifier) {
1685
+ data.identifier.set(task.configurationProperties.identifier, task);
1686
+ }
1687
+ if (group && task.configurationProperties.group === group) {
1688
+ if (task._source.kind === TaskSourceKind.Workspace) {
1689
+ workspaceTasks.push(task);
1690
+ }
1691
+ else {
1692
+ extensionTasks.push(task);
1693
+ }
1694
+ }
1695
+ }
1696
+ });
1697
+ const resolver = {
1698
+ resolve: async (uri, alias) => {
1699
+ const data = resolverData.get(typeof uri === 'string' ? uri : ( uri.toString()));
1700
+ if (!data) {
1701
+ return undefined;
1702
+ }
1703
+ return data.id.get(alias) || data.label.get(alias) || data.identifier.get(alias);
1704
+ }
1705
+ };
1706
+ if (workspaceTasks.length > 0) {
1707
+ if (workspaceTasks.length > 1) {
1708
+ this._log(( localizeWithPath(
1709
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1710
+ 'moreThanOneBuildTask',
1711
+ 'There are many build tasks defined in the tasks.json. Executing the first one.'
1712
+ )));
1713
+ }
1714
+ return { task: workspaceTasks[0], resolver };
1715
+ }
1716
+ if (extensionTasks.length === 0) {
1717
+ return undefined;
1718
+ }
1719
+ if (extensionTasks.length === 1) {
1720
+ return { task: extensionTasks[0], resolver };
1721
+ }
1722
+ else {
1723
+ const id = generateUuid();
1724
+ const task = ( new InMemoryTask(
1725
+ id,
1726
+ { kind: TaskSourceKind.InMemory, label: 'inMemory' },
1727
+ id,
1728
+ 'inMemory',
1729
+ { reevaluateOnRerun: true },
1730
+ {
1731
+ identifier: id,
1732
+ dependsOn: ( extensionTasks.map(
1733
+ (extensionTask) => { return { uri: extensionTask.getWorkspaceFolder().uri, task: extensionTask._id }; }
1734
+ )),
1735
+ name: id
1736
+ }
1737
+ ));
1738
+ return { task, resolver };
1739
+ }
1740
+ }
1741
+ _createResolver(grouped) {
1742
+ let resolverData;
1743
+ async function quickResolve(that, uri, identifier) {
1744
+ const foundTasks = await that._findWorkspaceTasks((task) => {
1745
+ const taskUri = ((ConfiguringTask.is(task) || CustomTask.is(task)) ? task._source.config.workspaceFolder?.uri : undefined);
1746
+ const originalUri = (typeof uri === 'string' ? uri : ( uri.toString()));
1747
+ if (taskUri?.toString() !== originalUri) {
1748
+ return false;
1749
+ }
1750
+ if (isString(identifier)) {
1751
+ return ((task._label === identifier) || (task.configurationProperties.identifier === identifier));
1752
+ }
1753
+ else {
1754
+ const keyedIdentifier = task.getDefinition(true);
1755
+ const searchIdentifier = TaskDefinition.createTaskIdentifier(identifier, console);
1756
+ return (searchIdentifier && keyedIdentifier) ? (searchIdentifier._key === keyedIdentifier._key) : false;
1757
+ }
1758
+ });
1759
+ if (foundTasks.length === 0) {
1760
+ return undefined;
1761
+ }
1762
+ const task = foundTasks[0];
1763
+ if (ConfiguringTask.is(task)) {
1764
+ return that.tryResolveTask(task);
1765
+ }
1766
+ return task;
1767
+ }
1768
+ async function getResolverData(that) {
1769
+ if (resolverData === undefined) {
1770
+ resolverData = ( new Map());
1771
+ (grouped || (await that._getGroupedTasks())).forEach((tasks, folder) => {
1772
+ let data = resolverData.get(folder);
1773
+ if (!data) {
1774
+ data = { label: ( new Map()), identifier: ( new Map()), taskIdentifier: ( new Map()) };
1775
+ resolverData.set(folder, data);
1776
+ }
1777
+ for (const task of tasks) {
1778
+ data.label.set(task._label, task);
1779
+ if (task.configurationProperties.identifier) {
1780
+ data.identifier.set(task.configurationProperties.identifier, task);
1781
+ }
1782
+ const keyedIdentifier = task.getDefinition(true);
1783
+ if (keyedIdentifier !== undefined) {
1784
+ data.taskIdentifier.set(keyedIdentifier._key, task);
1785
+ }
1786
+ }
1787
+ });
1788
+ }
1789
+ return resolverData;
1790
+ }
1791
+ async function fullResolve(that, uri, identifier) {
1792
+ const allResolverData = await getResolverData(that);
1793
+ const data = allResolverData.get(typeof uri === 'string' ? uri : ( uri.toString()));
1794
+ if (!data) {
1795
+ return undefined;
1796
+ }
1797
+ if (isString(identifier)) {
1798
+ return data.label.get(identifier) || data.identifier.get(identifier);
1799
+ }
1800
+ else {
1801
+ const key = TaskDefinition.createTaskIdentifier(identifier, console);
1802
+ return key !== undefined ? data.taskIdentifier.get(key._key) : undefined;
1803
+ }
1804
+ }
1805
+ return {
1806
+ resolve: async (uri, identifier) => {
1807
+ if (!identifier) {
1808
+ return undefined;
1809
+ }
1810
+ if ((resolverData === undefined) && (grouped === undefined)) {
1811
+ return (await quickResolve(this, uri, identifier)) ?? fullResolve(this, uri, identifier);
1812
+ }
1813
+ else {
1814
+ return fullResolve(this, uri, identifier);
1815
+ }
1816
+ }
1817
+ };
1818
+ }
1819
+ async _saveBeforeRun() {
1820
+ let SaveBeforeRunConfigOptions;
1821
+ ( (function(SaveBeforeRunConfigOptions) {
1822
+ SaveBeforeRunConfigOptions["Always"] = "always";
1823
+ SaveBeforeRunConfigOptions["Never"] = "never";
1824
+ SaveBeforeRunConfigOptions["Prompt"] = "prompt";
1825
+ })(SaveBeforeRunConfigOptions || (SaveBeforeRunConfigOptions = {})));
1826
+ const saveBeforeRunTaskConfig = this._configurationService.getValue("task.saveBeforeRun" );
1827
+ if (saveBeforeRunTaskConfig === SaveBeforeRunConfigOptions.Never) {
1828
+ return false;
1829
+ }
1830
+ else if (saveBeforeRunTaskConfig === SaveBeforeRunConfigOptions.Prompt && ( this._editorService.editors.some(e => e.isDirty()))) {
1831
+ const { confirmed } = await this._dialogService.confirm({
1832
+ message: ( localizeWithPath(
1833
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1834
+ 'TaskSystem.saveBeforeRun.prompt.title',
1835
+ "Save all editors?"
1836
+ )),
1837
+ detail: ( localizeWithPath(
1838
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1839
+ 'detail',
1840
+ "Do you want to save all editors before running the task?"
1841
+ )),
1842
+ primaryButton: ( localizeWithPath(
1843
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1844
+ { key: 'saveBeforeRun.save', comment: ['&& denotes a mnemonic'] },
1845
+ '&&Save'
1846
+ )),
1847
+ cancelButton: ( localizeWithPath(
1848
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1849
+ { key: 'saveBeforeRun.dontSave', comment: ['&& denotes a mnemonic'] },
1850
+ "Do&&n't Save"
1851
+ )),
1852
+ });
1853
+ if (!confirmed) {
1854
+ return false;
1855
+ }
1856
+ }
1857
+ await this._editorService.saveAll({ reason: 2 });
1858
+ return true;
1859
+ }
1860
+ async _executeTask(task, resolver, runSource) {
1861
+ let taskToRun = task;
1862
+ if (await this._saveBeforeRun()) {
1863
+ await this._configurationService.reloadConfiguration();
1864
+ await this._updateWorkspaceTasks();
1865
+ const taskFolder = task.getWorkspaceFolder();
1866
+ const taskIdentifier = task.configurationProperties.identifier;
1867
+ const taskType = CustomTask.is(task) ? task.customizes()?.type : (ContributedTask.is(task) ? task.type : undefined);
1868
+ taskToRun = ((taskFolder && taskIdentifier && ((runSource === 1) ))
1869
+ ? await this.getTask(taskFolder, taskIdentifier, false, taskType) : task) ?? task;
1870
+ }
1871
+ await ProblemMatcherRegistry.onReady();
1872
+ const executeResult = runSource === 4 ? this._getTaskSystem().reconnect(taskToRun, resolver) : this._getTaskSystem().run(taskToRun, resolver);
1873
+ if (executeResult) {
1874
+ return this._handleExecuteResult(executeResult, runSource);
1875
+ }
1876
+ return { exitCode: 0 };
1877
+ }
1878
+ async _handleExecuteResult(executeResult, runSource) {
1879
+ if (runSource === 1 ) {
1880
+ await this._setRecentlyUsedTask(executeResult.task);
1881
+ }
1882
+ if (executeResult.kind === 2 ) {
1883
+ const active = executeResult.active;
1884
+ if (active && active.same && runSource === 2 || runSource === 4 ) {
1885
+ this._logService.debug('Ignoring task that is already active', executeResult.task);
1886
+ return executeResult.promise;
1887
+ }
1888
+ if (active && active.same) {
1889
+ if (this._taskSystem?.isTaskVisible(executeResult.task)) {
1890
+ const message = ( localizeWithPath(
1891
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1892
+ 'TaskSystem.activeSame.noBackground',
1893
+ 'The task \'{0}\' is already active.',
1894
+ executeResult.task.getQualifiedLabel()
1895
+ ));
1896
+ const lastInstance = this._getTaskSystem().getLastInstance(executeResult.task) ?? executeResult.task;
1897
+ this._notificationService.prompt(Severity$1.Warning, message, [{
1898
+ label: ( localizeWithPath(
1899
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1900
+ 'terminateTask',
1901
+ "Terminate Task"
1902
+ )),
1903
+ run: () => this.terminate(lastInstance)
1904
+ },
1905
+ {
1906
+ label: ( localizeWithPath(
1907
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1908
+ 'restartTask',
1909
+ "Restart Task"
1910
+ )),
1911
+ run: () => this._restart(lastInstance)
1912
+ }], { sticky: true });
1913
+ }
1914
+ else {
1915
+ this._taskSystem?.revealTask(executeResult.task);
1916
+ }
1917
+ }
1918
+ else {
1919
+ throw new TaskError(Severity$1.Warning, localizeWithPath('vs/workbench/contrib/tasks/browser/abstractTaskService', 'TaskSystem.active', 'There is already a task running. Terminate it first before executing another task.'), 1 );
1920
+ }
1921
+ }
1922
+ this._setRecentlyUsedTask(executeResult.task);
1923
+ return executeResult.promise;
1924
+ }
1925
+ async _restart(task) {
1926
+ if (!this._taskSystem) {
1927
+ return;
1928
+ }
1929
+ const response = await this._taskSystem.terminate(task);
1930
+ if (response.success) {
1931
+ try {
1932
+ await this.run(task);
1933
+ }
1934
+ catch {
1935
+ }
1936
+ }
1937
+ else {
1938
+ this._notificationService.warn(( localizeWithPath(
1939
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
1940
+ 'TaskSystem.restartFailed',
1941
+ 'Failed to terminate and restart task {0}',
1942
+ isString(task) ? task : task.configurationProperties.name
1943
+ )));
1944
+ }
1945
+ }
1946
+ async terminate(task) {
1947
+ if (!(await this._trust())) {
1948
+ return { success: true, task: undefined };
1949
+ }
1950
+ if (!this._taskSystem) {
1951
+ return { success: true, task: undefined };
1952
+ }
1953
+ return this._taskSystem.terminate(task);
1954
+ }
1955
+ _terminateAll() {
1956
+ if (!this._taskSystem) {
1957
+ return Promise.resolve([]);
1958
+ }
1959
+ return this._taskSystem.terminateAll();
1960
+ }
1961
+ _createTerminalTaskSystem() {
1962
+ return ( new TerminalTaskSystem(
1963
+ this._terminalService,
1964
+ this._terminalGroupService,
1965
+ this._outputService,
1966
+ this._paneCompositeService,
1967
+ this._viewsService,
1968
+ this._markerService,
1969
+ this._modelService,
1970
+ this._configurationResolverService,
1971
+ this._contextService,
1972
+ this._environmentService,
1973
+ AbstractTaskService_1.OutputChannelId,
1974
+ this._fileService,
1975
+ this._terminalProfileResolverService,
1976
+ this._pathService,
1977
+ this._viewDescriptorService,
1978
+ this._logService,
1979
+ this._notificationService,
1980
+ this._instantiationService,
1981
+ (workspaceFolder) => {
1982
+ if (workspaceFolder) {
1983
+ return this._getTaskSystemInfo(workspaceFolder.uri.scheme);
1984
+ }
1985
+ else if (this._taskSystemInfos.size > 0) {
1986
+ const infos = Array.from(this._taskSystemInfos.entries());
1987
+ const notFile = infos.filter(info => info[0] !== Schemas.file);
1988
+ if (notFile.length > 0) {
1989
+ return notFile[0][1][0];
1990
+ }
1991
+ return infos[0][1][0];
1992
+ }
1993
+ else {
1994
+ return undefined;
1995
+ }
1996
+ }
1997
+ ));
1998
+ }
1999
+ _isTaskProviderEnabled(type) {
2000
+ const definition = TaskDefinitionRegistry.get(type);
2001
+ return !definition || !definition.when || this._contextKeyService.contextMatchesRules(definition.when);
2002
+ }
2003
+ async _getGroupedTasks(filter) {
2004
+ await this._waitForAllSupportedExecutions;
2005
+ const type = filter?.type;
2006
+ const needsRecentTasksMigration = this._needsRecentTasksMigration();
2007
+ await this._activateTaskProviders(filter?.type);
2008
+ const validTypes = Object.create(null);
2009
+ TaskDefinitionRegistry.all().forEach(definition => validTypes[definition.taskType] = true);
2010
+ validTypes['shell'] = true;
2011
+ validTypes['process'] = true;
2012
+ const contributedTaskSets = await ( new Promise(resolve => {
2013
+ const result = [];
2014
+ let counter = 0;
2015
+ const done = (value) => {
2016
+ if (value) {
2017
+ result.push(value);
2018
+ }
2019
+ if (--counter === 0) {
2020
+ resolve(result);
2021
+ }
2022
+ };
2023
+ const error = (error) => {
2024
+ try {
2025
+ if (error && isString(error.message)) {
2026
+ this._log(`Error: ${error.message}\n`);
2027
+ this._showOutput();
2028
+ }
2029
+ else {
2030
+ this._log('Unknown error received while collecting tasks from providers.');
2031
+ this._showOutput();
2032
+ }
2033
+ }
2034
+ finally {
2035
+ if (--counter === 0) {
2036
+ resolve(result);
2037
+ }
2038
+ }
2039
+ };
2040
+ if (this._isProvideTasksEnabled() && ((this.schemaVersion === 2) ) && (this._providers.size > 0)) {
2041
+ let foundAnyProviders = false;
2042
+ for (const [handle, provider] of this._providers) {
2043
+ const providerType = this._providerTypes.get(handle);
2044
+ if ((type === undefined) || (type === providerType)) {
2045
+ if (providerType && !this._isTaskProviderEnabled(providerType)) {
2046
+ continue;
2047
+ }
2048
+ foundAnyProviders = true;
2049
+ counter++;
2050
+ raceTimeout(provider.provideTasks(validTypes).then((taskSet) => {
2051
+ for (const task of taskSet.tasks) {
2052
+ if (task.type !== this._providerTypes.get(handle)) {
2053
+ this._log(( localizeWithPath(
2054
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2055
+ 'unexpectedTaskType',
2056
+ "The task provider for \"{0}\" tasks unexpectedly provided a task of type \"{1}\".\n",
2057
+ this._providerTypes.get(handle),
2058
+ task.type
2059
+ )));
2060
+ if ((task.type !== 'shell') && (task.type !== 'process')) {
2061
+ this._showOutput();
2062
+ }
2063
+ break;
2064
+ }
2065
+ }
2066
+ return done(taskSet);
2067
+ }, error), 5000, () => {
2068
+ console.error('Timed out getting tasks from ', providerType);
2069
+ done(undefined);
2070
+ });
2071
+ }
2072
+ }
2073
+ if (!foundAnyProviders) {
2074
+ resolve(result);
2075
+ }
2076
+ }
2077
+ else {
2078
+ resolve(result);
2079
+ }
2080
+ }));
2081
+ const result = ( new TaskMap());
2082
+ const contributedTasks = ( new TaskMap());
2083
+ for (const set of contributedTaskSets) {
2084
+ for (const task of set.tasks) {
2085
+ const workspaceFolder = task.getWorkspaceFolder();
2086
+ if (workspaceFolder) {
2087
+ contributedTasks.add(workspaceFolder, task);
2088
+ }
2089
+ }
2090
+ }
2091
+ try {
2092
+ const customTasks = await this.getWorkspaceTasks();
2093
+ const customTasksKeyValuePairs = Array.from(customTasks);
2094
+ const customTasksPromises = ( customTasksKeyValuePairs.map(async ([key, folderTasks]) => {
2095
+ const contributed = contributedTasks.get(key);
2096
+ if (!folderTasks.set) {
2097
+ if (contributed) {
2098
+ result.add(key, ...contributed);
2099
+ }
2100
+ return;
2101
+ }
2102
+ if (this._contextService.getWorkbenchState() === 1 ) {
2103
+ result.add(key, ...folderTasks.set.tasks);
2104
+ }
2105
+ else {
2106
+ const configurations = folderTasks.configurations;
2107
+ const legacyTaskConfigurations = folderTasks.set ? this._getLegacyTaskConfigurations(folderTasks.set) : undefined;
2108
+ const customTasksToDelete = [];
2109
+ if (configurations || legacyTaskConfigurations) {
2110
+ const unUsedConfigurations = ( new Set());
2111
+ if (configurations) {
2112
+ ( Object.keys(configurations.byIdentifier)).forEach(key => unUsedConfigurations.add(key));
2113
+ }
2114
+ for (const task of contributed) {
2115
+ if (!ContributedTask.is(task)) {
2116
+ continue;
2117
+ }
2118
+ if (configurations) {
2119
+ const configuringTask = configurations.byIdentifier[task.defines._key];
2120
+ if (configuringTask) {
2121
+ unUsedConfigurations.delete(task.defines._key);
2122
+ result.add(key, createCustomTask(task, configuringTask));
2123
+ }
2124
+ else {
2125
+ result.add(key, task);
2126
+ }
2127
+ }
2128
+ else if (legacyTaskConfigurations) {
2129
+ const configuringTask = legacyTaskConfigurations[task.defines._key];
2130
+ if (configuringTask) {
2131
+ result.add(key, createCustomTask(task, configuringTask));
2132
+ customTasksToDelete.push(configuringTask);
2133
+ }
2134
+ else {
2135
+ result.add(key, task);
2136
+ }
2137
+ }
2138
+ else {
2139
+ result.add(key, task);
2140
+ }
2141
+ }
2142
+ if (customTasksToDelete.length > 0) {
2143
+ const toDelete = customTasksToDelete.reduce((map, task) => {
2144
+ map[task._id] = true;
2145
+ return map;
2146
+ }, Object.create(null));
2147
+ for (const task of folderTasks.set.tasks) {
2148
+ if (toDelete[task._id]) {
2149
+ continue;
2150
+ }
2151
+ result.add(key, task);
2152
+ }
2153
+ }
2154
+ else {
2155
+ result.add(key, ...folderTasks.set.tasks);
2156
+ }
2157
+ const unUsedConfigurationsAsArray = Array.from(unUsedConfigurations);
2158
+ const unUsedConfigurationPromises = ( unUsedConfigurationsAsArray.map(async (value) => {
2159
+ const configuringTask = configurations.byIdentifier[value];
2160
+ if (type && (type !== configuringTask.configures.type)) {
2161
+ return;
2162
+ }
2163
+ let requiredTaskProviderUnavailable = false;
2164
+ for (const [handle, provider] of this._providers) {
2165
+ const providerType = this._providerTypes.get(handle);
2166
+ if (configuringTask.type === providerType) {
2167
+ if (providerType && !this._isTaskProviderEnabled(providerType)) {
2168
+ requiredTaskProviderUnavailable = true;
2169
+ continue;
2170
+ }
2171
+ try {
2172
+ const resolvedTask = await provider.resolveTask(configuringTask);
2173
+ if (resolvedTask && (resolvedTask._id === configuringTask._id)) {
2174
+ result.add(key, createCustomTask(resolvedTask, configuringTask));
2175
+ return;
2176
+ }
2177
+ }
2178
+ catch (error) {
2179
+ }
2180
+ }
2181
+ }
2182
+ if (requiredTaskProviderUnavailable) {
2183
+ this._log(( localizeWithPath(
2184
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2185
+ 'TaskService.providerUnavailable',
2186
+ 'Warning: {0} tasks are unavailable in the current environment.',
2187
+ configuringTask.configures.type
2188
+ )));
2189
+ }
2190
+ else {
2191
+ this._log(( localizeWithPath(
2192
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2193
+ 'TaskService.noConfiguration',
2194
+ 'Error: The {0} task detection didn\'t contribute a task for the following configuration:\n{1}\nThe task will be ignored.',
2195
+ configuringTask.configures.type,
2196
+ JSON.stringify(configuringTask._source.config.element, undefined, 4)
2197
+ )));
2198
+ this._showOutput();
2199
+ }
2200
+ }));
2201
+ await Promise.all(unUsedConfigurationPromises);
2202
+ }
2203
+ else {
2204
+ result.add(key, ...folderTasks.set.tasks);
2205
+ result.add(key, ...contributed);
2206
+ }
2207
+ }
2208
+ }));
2209
+ await Promise.all(customTasksPromises);
2210
+ if (needsRecentTasksMigration) {
2211
+ await this._migrateRecentTasks(result.all());
2212
+ }
2213
+ return result;
2214
+ }
2215
+ catch {
2216
+ const result = ( new TaskMap());
2217
+ for (const set of contributedTaskSets) {
2218
+ for (const task of set.tasks) {
2219
+ const folder = task.getWorkspaceFolder();
2220
+ if (folder) {
2221
+ result.add(folder, task);
2222
+ }
2223
+ }
2224
+ }
2225
+ return result;
2226
+ }
2227
+ }
2228
+ _getLegacyTaskConfigurations(workspaceTasks) {
2229
+ let result;
2230
+ function getResult() {
2231
+ if (result) {
2232
+ return result;
2233
+ }
2234
+ result = Object.create(null);
2235
+ return result;
2236
+ }
2237
+ for (const task of workspaceTasks.tasks) {
2238
+ if (CustomTask.is(task)) {
2239
+ const commandName = task.command && task.command.name;
2240
+ if (commandName === 'gulp' || commandName === 'grunt' || commandName === 'jake') {
2241
+ const identifier = KeyedTaskIdentifier.create({
2242
+ type: commandName,
2243
+ task: task.configurationProperties.name
2244
+ });
2245
+ getResult()[identifier._key] = task;
2246
+ }
2247
+ }
2248
+ }
2249
+ return result;
2250
+ }
2251
+ async getWorkspaceTasks(runSource = 1 ) {
2252
+ if (!(await this._trust())) {
2253
+ return ( new Map());
2254
+ }
2255
+ await raceTimeout(this._waitForAllSupportedExecutions, 2000, () => {
2256
+ this._logService.warn('Timed out waiting for all supported executions');
2257
+ });
2258
+ await this._whenTaskSystemReady;
2259
+ if (this._workspaceTasksPromise) {
2260
+ return this._workspaceTasksPromise;
2261
+ }
2262
+ return this._updateWorkspaceTasks(runSource);
2263
+ }
2264
+ _updateWorkspaceTasks(runSource = 1 ) {
2265
+ this._workspaceTasksPromise = this._computeWorkspaceTasks(runSource);
2266
+ return this._workspaceTasksPromise;
2267
+ }
2268
+ async _getAFolder() {
2269
+ let folder = this.workspaceFolders.length > 0 ? this.workspaceFolders[0] : undefined;
2270
+ if (!folder) {
2271
+ const userhome = await this._pathService.userHome();
2272
+ folder = ( new WorkspaceFolder({ uri: userhome, name: basename(userhome), index: 0 }));
2273
+ }
2274
+ return folder;
2275
+ }
2276
+ async _computeWorkspaceTasks(runSource = 1 ) {
2277
+ const promises = [];
2278
+ for (const folder of this.workspaceFolders) {
2279
+ promises.push(this._computeWorkspaceFolderTasks(folder, runSource));
2280
+ }
2281
+ const values = await Promise.all(promises);
2282
+ const result = ( new Map());
2283
+ for (const value of values) {
2284
+ if (value) {
2285
+ result.set(( value.workspaceFolder.uri.toString()), value);
2286
+ }
2287
+ }
2288
+ const folder = await this._getAFolder();
2289
+ if (this._contextService.getWorkbenchState() !== 1 ) {
2290
+ const workspaceFileTasks = await this._computeWorkspaceFileTasks(folder, runSource);
2291
+ if (workspaceFileTasks && this._workspace && this._workspace.configuration) {
2292
+ result.set(( this._workspace.configuration.toString()), workspaceFileTasks);
2293
+ }
2294
+ }
2295
+ const userTasks = await this._computeUserTasks(folder, runSource);
2296
+ if (userTasks) {
2297
+ result.set(USER_TASKS_GROUP_KEY, userTasks);
2298
+ }
2299
+ return result;
2300
+ }
2301
+ get _jsonTasksSupported() {
2302
+ return ShellExecutionSupportedContext.getValue(this._contextKeyService) === true && ProcessExecutionSupportedContext.getValue(this._contextKeyService) === true;
2303
+ }
2304
+ async _computeWorkspaceFolderTasks(workspaceFolder, runSource = 1 ) {
2305
+ const workspaceFolderConfiguration = (this._executionEngine === ExecutionEngine.Process ? await this._computeLegacyConfiguration(workspaceFolder) : await this._computeConfiguration(workspaceFolder));
2306
+ if (!workspaceFolderConfiguration || !workspaceFolderConfiguration.config || workspaceFolderConfiguration.hasErrors) {
2307
+ return Promise.resolve({ workspaceFolder, set: undefined, configurations: undefined, hasErrors: workspaceFolderConfiguration ? workspaceFolderConfiguration.hasErrors : false });
2308
+ }
2309
+ await ProblemMatcherRegistry.onReady();
2310
+ const taskSystemInfo = this._getTaskSystemInfo(workspaceFolder.uri.scheme);
2311
+ const problemReporter = ( new ProblemReporter(this._outputChannel));
2312
+ const parseResult = parse(workspaceFolder, undefined, taskSystemInfo ? taskSystemInfo.platform : platform, workspaceFolderConfiguration.config, problemReporter, TaskConfigSource.TasksJson, this._contextKeyService);
2313
+ let hasErrors = false;
2314
+ if (!parseResult.validationStatus.isOK() && ((parseResult.validationStatus.state !== 1) )) {
2315
+ hasErrors = true;
2316
+ this._showOutput(runSource);
2317
+ }
2318
+ if (problemReporter.status.isFatal()) {
2319
+ problemReporter.fatal(( localizeWithPath(
2320
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2321
+ 'TaskSystem.configurationErrors',
2322
+ 'Error: the provided task configuration has validation errors and can\'t not be used. Please correct the errors first.'
2323
+ )));
2324
+ return { workspaceFolder, set: undefined, configurations: undefined, hasErrors };
2325
+ }
2326
+ let customizedTasks;
2327
+ if (parseResult.configured && parseResult.configured.length > 0) {
2328
+ customizedTasks = {
2329
+ byIdentifier: Object.create(null)
2330
+ };
2331
+ for (const task of parseResult.configured) {
2332
+ customizedTasks.byIdentifier[task.configures._key] = task;
2333
+ }
2334
+ }
2335
+ if (!this._jsonTasksSupported && (parseResult.custom.length > 0)) {
2336
+ console.warn('Custom workspace tasks are not supported.');
2337
+ }
2338
+ return { workspaceFolder, set: { tasks: this._jsonTasksSupported ? parseResult.custom : [] }, configurations: customizedTasks, hasErrors };
2339
+ }
2340
+ _testParseExternalConfig(config, location) {
2341
+ if (!config) {
2342
+ return { config: undefined, hasParseErrors: false };
2343
+ }
2344
+ const parseErrors = config.$parseErrors;
2345
+ if (parseErrors) {
2346
+ let isAffected = false;
2347
+ for (const parseError of parseErrors) {
2348
+ if (/tasks\.json$/.test(parseError)) {
2349
+ isAffected = true;
2350
+ break;
2351
+ }
2352
+ }
2353
+ if (isAffected) {
2354
+ this._log(( localizeWithPath(
2355
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2356
+ { key: 'TaskSystem.invalidTaskJsonOther', comment: ['Message notifies of an error in one of several places there is tasks related json, not necessarily in a file named tasks.json'] },
2357
+ 'Error: The content of the tasks json in {0} has syntax errors. Please correct them before executing a task.',
2358
+ location
2359
+ )));
2360
+ this._showOutput();
2361
+ return { config, hasParseErrors: true };
2362
+ }
2363
+ }
2364
+ return { config, hasParseErrors: false };
2365
+ }
2366
+ _log(value, verbose) {
2367
+ if (!verbose || this._configurationService.getValue("task.verboseLogging" )) {
2368
+ this._outputChannel.append(value + '\n');
2369
+ }
2370
+ }
2371
+ async _computeWorkspaceFileTasks(workspaceFolder, runSource = 1 ) {
2372
+ if (this._executionEngine === ExecutionEngine.Process) {
2373
+ return this._emptyWorkspaceTaskResults(workspaceFolder);
2374
+ }
2375
+ const workspaceFileConfig = this._getConfiguration(workspaceFolder, TaskSourceKind.WorkspaceFile);
2376
+ const configuration = this._testParseExternalConfig(workspaceFileConfig.config, ( localizeWithPath(
2377
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2378
+ 'TasksSystem.locationWorkspaceConfig',
2379
+ 'workspace file'
2380
+ )));
2381
+ const customizedTasks = {
2382
+ byIdentifier: Object.create(null)
2383
+ };
2384
+ const custom = [];
2385
+ await this._computeTasksForSingleConfig(workspaceFolder, configuration.config, runSource, custom, customizedTasks.byIdentifier, TaskConfigSource.WorkspaceFile);
2386
+ const engine = configuration.config ? ExecutionEngine$1.from(configuration.config) : ExecutionEngine.Terminal;
2387
+ if (engine === ExecutionEngine.Process) {
2388
+ this._notificationService.warn(( localizeWithPath(
2389
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2390
+ 'TaskSystem.versionWorkspaceFile',
2391
+ 'Only tasks version 2.0.0 permitted in workspace configuration files.'
2392
+ )));
2393
+ return this._emptyWorkspaceTaskResults(workspaceFolder);
2394
+ }
2395
+ return { workspaceFolder, set: { tasks: custom }, configurations: customizedTasks, hasErrors: configuration.hasParseErrors };
2396
+ }
2397
+ async _computeUserTasks(workspaceFolder, runSource = 1 ) {
2398
+ if (this._executionEngine === ExecutionEngine.Process) {
2399
+ return this._emptyWorkspaceTaskResults(workspaceFolder);
2400
+ }
2401
+ const userTasksConfig = this._getConfiguration(workspaceFolder, TaskSourceKind.User);
2402
+ const configuration = this._testParseExternalConfig(userTasksConfig.config, ( localizeWithPath(
2403
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2404
+ 'TasksSystem.locationUserConfig',
2405
+ 'user settings'
2406
+ )));
2407
+ const customizedTasks = {
2408
+ byIdentifier: Object.create(null)
2409
+ };
2410
+ const custom = [];
2411
+ await this._computeTasksForSingleConfig(workspaceFolder, configuration.config, runSource, custom, customizedTasks.byIdentifier, TaskConfigSource.User);
2412
+ const engine = configuration.config ? ExecutionEngine$1.from(configuration.config) : ExecutionEngine.Terminal;
2413
+ if (engine === ExecutionEngine.Process) {
2414
+ this._notificationService.warn(( localizeWithPath(
2415
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2416
+ 'TaskSystem.versionSettings',
2417
+ 'Only tasks version 2.0.0 permitted in user settings.'
2418
+ )));
2419
+ return this._emptyWorkspaceTaskResults(workspaceFolder);
2420
+ }
2421
+ return { workspaceFolder, set: { tasks: custom }, configurations: customizedTasks, hasErrors: configuration.hasParseErrors };
2422
+ }
2423
+ _emptyWorkspaceTaskResults(workspaceFolder) {
2424
+ return { workspaceFolder, set: undefined, configurations: undefined, hasErrors: false };
2425
+ }
2426
+ async _computeTasksForSingleConfig(workspaceFolder, config, runSource, custom, customized, source, isRecentTask = false) {
2427
+ if (!config) {
2428
+ return false;
2429
+ }
2430
+ else if (!workspaceFolder) {
2431
+ this._logService.trace('TaskService.computeTasksForSingleConfig: no workspace folder for worskspace', this._workspace?.id);
2432
+ return false;
2433
+ }
2434
+ const taskSystemInfo = this._getTaskSystemInfo(workspaceFolder.uri.scheme);
2435
+ const problemReporter = ( new ProblemReporter(this._outputChannel));
2436
+ const parseResult = parse(workspaceFolder, this._workspace, taskSystemInfo ? taskSystemInfo.platform : platform, config, problemReporter, source, this._contextKeyService, isRecentTask);
2437
+ let hasErrors = false;
2438
+ if (!parseResult.validationStatus.isOK() && ((parseResult.validationStatus.state !== 1) )) {
2439
+ this._showOutput(runSource);
2440
+ hasErrors = true;
2441
+ }
2442
+ if (problemReporter.status.isFatal()) {
2443
+ problemReporter.fatal(( localizeWithPath(
2444
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2445
+ 'TaskSystem.configurationErrors',
2446
+ 'Error: the provided task configuration has validation errors and can\'t not be used. Please correct the errors first.'
2447
+ )));
2448
+ return hasErrors;
2449
+ }
2450
+ if (parseResult.configured && parseResult.configured.length > 0) {
2451
+ for (const task of parseResult.configured) {
2452
+ customized[task.configures._key] = task;
2453
+ }
2454
+ }
2455
+ if (!this._jsonTasksSupported && (parseResult.custom.length > 0)) {
2456
+ console.warn('Custom workspace tasks are not supported.');
2457
+ }
2458
+ else {
2459
+ for (const task of parseResult.custom) {
2460
+ custom.push(task);
2461
+ }
2462
+ }
2463
+ return hasErrors;
2464
+ }
2465
+ _computeConfiguration(workspaceFolder) {
2466
+ const { config, hasParseErrors } = this._getConfiguration(workspaceFolder);
2467
+ return Promise.resolve({ workspaceFolder, config, hasErrors: hasParseErrors });
2468
+ }
2469
+ _computeWorkspaceFolderSetup() {
2470
+ const workspaceFolders = [];
2471
+ const ignoredWorkspaceFolders = [];
2472
+ let executionEngine = ExecutionEngine.Terminal;
2473
+ let schemaVersion = 2 ;
2474
+ let workspace;
2475
+ if (this._contextService.getWorkbenchState() === 2 ) {
2476
+ const workspaceFolder = this._contextService.getWorkspace().folders[0];
2477
+ workspaceFolders.push(workspaceFolder);
2478
+ executionEngine = this._computeExecutionEngine(workspaceFolder);
2479
+ const telemetryData = {
2480
+ executionEngineVersion: executionEngine
2481
+ };
2482
+ this._telemetryService.publicLog('taskService.engineVersion', telemetryData);
2483
+ schemaVersion = this._computeJsonSchemaVersion(workspaceFolder);
2484
+ }
2485
+ else if (this._contextService.getWorkbenchState() === 3 ) {
2486
+ workspace = this._contextService.getWorkspace();
2487
+ for (const workspaceFolder of this._contextService.getWorkspace().folders) {
2488
+ if (schemaVersion === this._computeJsonSchemaVersion(workspaceFolder)) {
2489
+ workspaceFolders.push(workspaceFolder);
2490
+ }
2491
+ else {
2492
+ ignoredWorkspaceFolders.push(workspaceFolder);
2493
+ this._log(( localizeWithPath(
2494
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2495
+ 'taskService.ignoreingFolder',
2496
+ 'Ignoring task configurations for workspace folder {0}. Multi folder workspace task support requires that all folders use task version 2.0.0',
2497
+ workspaceFolder.uri.fsPath
2498
+ )));
2499
+ }
2500
+ }
2501
+ }
2502
+ return [workspaceFolders, ignoredWorkspaceFolders, executionEngine, schemaVersion, workspace];
2503
+ }
2504
+ _computeExecutionEngine(workspaceFolder) {
2505
+ const { config } = this._getConfiguration(workspaceFolder);
2506
+ if (!config) {
2507
+ return ExecutionEngine._default;
2508
+ }
2509
+ return ExecutionEngine$1.from(config);
2510
+ }
2511
+ _computeJsonSchemaVersion(workspaceFolder) {
2512
+ const { config } = this._getConfiguration(workspaceFolder);
2513
+ if (!config) {
2514
+ return 2 ;
2515
+ }
2516
+ return JsonSchemaVersion.from(config);
2517
+ }
2518
+ _getConfiguration(workspaceFolder, source) {
2519
+ let result;
2520
+ if ((source !== TaskSourceKind.User) && ((this._contextService.getWorkbenchState() === 1) )) {
2521
+ result = undefined;
2522
+ }
2523
+ else {
2524
+ const wholeConfig = this._configurationService.inspect('tasks', { resource: workspaceFolder.uri });
2525
+ switch (source) {
2526
+ case TaskSourceKind.User: {
2527
+ if (wholeConfig.userValue !== wholeConfig.workspaceFolderValue) {
2528
+ result = deepClone(wholeConfig.userValue);
2529
+ }
2530
+ break;
2531
+ }
2532
+ case TaskSourceKind.Workspace:
2533
+ result = deepClone(wholeConfig.workspaceFolderValue);
2534
+ break;
2535
+ case TaskSourceKind.WorkspaceFile: {
2536
+ if (((this._contextService.getWorkbenchState() === 3) )
2537
+ && (wholeConfig.workspaceFolderValue !== wholeConfig.workspaceValue)) {
2538
+ result = deepClone(wholeConfig.workspaceValue);
2539
+ }
2540
+ break;
2541
+ }
2542
+ default: result = deepClone(wholeConfig.workspaceFolderValue);
2543
+ }
2544
+ }
2545
+ if (!result) {
2546
+ return { config: undefined, hasParseErrors: false };
2547
+ }
2548
+ const parseErrors = result.$parseErrors;
2549
+ if (parseErrors) {
2550
+ let isAffected = false;
2551
+ for (const parseError of parseErrors) {
2552
+ if (/tasks\.json$/.test(parseError)) {
2553
+ isAffected = true;
2554
+ break;
2555
+ }
2556
+ }
2557
+ if (isAffected) {
2558
+ this._log(( localizeWithPath(
2559
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2560
+ 'TaskSystem.invalidTaskJson',
2561
+ 'Error: The content of the tasks.json file has syntax errors. Please correct them before executing a task.'
2562
+ )));
2563
+ this._showOutput();
2564
+ return { config: undefined, hasParseErrors: true };
2565
+ }
2566
+ }
2567
+ return { config: result, hasParseErrors: false };
2568
+ }
2569
+ inTerminal() {
2570
+ if (this._taskSystem) {
2571
+ return this._taskSystem instanceof TerminalTaskSystem;
2572
+ }
2573
+ return this._executionEngine === ExecutionEngine.Terminal;
2574
+ }
2575
+ configureAction() {
2576
+ const thisCapture = this;
2577
+ return new (class extends Action {
2578
+ constructor() {
2579
+ super(ConfigureTaskAction.ID, ConfigureTaskAction.TEXT.value, undefined, true, () => { thisCapture._runConfigureTasks(); return Promise.resolve(undefined); });
2580
+ }
2581
+ });
2582
+ }
2583
+ _handleError(err) {
2584
+ let showOutput = true;
2585
+ if (err instanceof TaskError) {
2586
+ const buildError = err;
2587
+ const needsConfig = buildError.code === 0 || buildError.code === 2 || buildError.code === 3 ;
2588
+ const needsTerminate = buildError.code === 1 ;
2589
+ if (needsConfig || needsTerminate) {
2590
+ this._notificationService.prompt(buildError.severity, buildError.message, [{
2591
+ label: needsConfig ? ConfigureTaskAction.TEXT.value : ( localizeWithPath(
2592
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2593
+ 'TerminateAction.label',
2594
+ "Terminate Task"
2595
+ )),
2596
+ run: () => {
2597
+ if (needsConfig) {
2598
+ this._runConfigureTasks();
2599
+ }
2600
+ else {
2601
+ this._runTerminateCommand();
2602
+ }
2603
+ }
2604
+ }]);
2605
+ }
2606
+ else {
2607
+ this._notificationService.notify({ severity: buildError.severity, message: buildError.message });
2608
+ }
2609
+ }
2610
+ else if (err instanceof Error) {
2611
+ const error = err;
2612
+ this._notificationService.error(error.message);
2613
+ showOutput = false;
2614
+ }
2615
+ else if (isString(err)) {
2616
+ this._notificationService.error(err);
2617
+ }
2618
+ else {
2619
+ this._notificationService.error(( localizeWithPath(
2620
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2621
+ 'TaskSystem.unknownError',
2622
+ 'An error has occurred while running a task. See task log for details.'
2623
+ )));
2624
+ }
2625
+ if (showOutput) {
2626
+ this._showOutput();
2627
+ }
2628
+ }
2629
+ _showDetail() {
2630
+ return this._configurationService.getValue(QUICKOPEN_DETAIL_CONFIG);
2631
+ }
2632
+ async _createTaskQuickPickEntries(tasks, group = false, sort = false, selectedEntry, includeRecents = true) {
2633
+ let encounteredTasks = {};
2634
+ if (tasks === undefined || tasks === null || tasks.length === 0) {
2635
+ return [];
2636
+ }
2637
+ const TaskQuickPickEntry = (task) => {
2638
+ const newEntry = { label: task._label, description: this.getTaskDescription(task), task, detail: this._showDetail() ? task.configurationProperties.detail : undefined };
2639
+ if (encounteredTasks[task._id]) {
2640
+ if (encounteredTasks[task._id].length === 1) {
2641
+ encounteredTasks[task._id][0].label += ' (1)';
2642
+ }
2643
+ newEntry.label = newEntry.label + ' (' + ( (encounteredTasks[task._id].length + 1).toString()) + ')';
2644
+ }
2645
+ else {
2646
+ encounteredTasks[task._id] = [];
2647
+ }
2648
+ encounteredTasks[task._id].push(newEntry);
2649
+ return newEntry;
2650
+ };
2651
+ function fillEntries(entries, tasks, groupLabel) {
2652
+ if (tasks.length) {
2653
+ entries.push({ type: 'separator', label: groupLabel });
2654
+ }
2655
+ for (const task of tasks) {
2656
+ const entry = TaskQuickPickEntry(task);
2657
+ entry.buttons = [{ iconClass: ThemeIcon.asClassName(configureTaskIcon), tooltip: ( localizeWithPath(
2658
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2659
+ 'configureTask',
2660
+ "Configure Task"
2661
+ )) }];
2662
+ if (selectedEntry && (task === selectedEntry.task)) {
2663
+ entries.unshift(selectedEntry);
2664
+ }
2665
+ else {
2666
+ entries.push(entry);
2667
+ }
2668
+ }
2669
+ }
2670
+ let entries;
2671
+ if (group) {
2672
+ entries = [];
2673
+ if (tasks.length === 1) {
2674
+ entries.push(TaskQuickPickEntry(tasks[0]));
2675
+ }
2676
+ else {
2677
+ const recentlyUsedTasks = await this.getSavedTasks('historical');
2678
+ const recent = [];
2679
+ const recentSet = ( new Set());
2680
+ let configured = [];
2681
+ let detected = [];
2682
+ const taskMap = Object.create(null);
2683
+ tasks.forEach(task => {
2684
+ const key = task.getCommonTaskId();
2685
+ if (key) {
2686
+ taskMap[key] = task;
2687
+ }
2688
+ });
2689
+ recentlyUsedTasks.reverse().forEach(recentTask => {
2690
+ const key = recentTask.getCommonTaskId();
2691
+ if (key) {
2692
+ recentSet.add(key);
2693
+ const task = taskMap[key];
2694
+ if (task) {
2695
+ recent.push(task);
2696
+ }
2697
+ }
2698
+ });
2699
+ for (const task of tasks) {
2700
+ const key = task.getCommonTaskId();
2701
+ if (!key || !( recentSet.has(key))) {
2702
+ if ((task._source.kind === TaskSourceKind.Workspace) || (task._source.kind === TaskSourceKind.User)) {
2703
+ configured.push(task);
2704
+ }
2705
+ else {
2706
+ detected.push(task);
2707
+ }
2708
+ }
2709
+ }
2710
+ const sorter = this.createSorter();
2711
+ if (includeRecents) {
2712
+ fillEntries(entries, recent, ( localizeWithPath(
2713
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2714
+ 'recentlyUsed',
2715
+ 'recently used tasks'
2716
+ )));
2717
+ }
2718
+ configured = configured.sort((a, b) => sorter.compare(a, b));
2719
+ fillEntries(entries, configured, ( localizeWithPath(
2720
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2721
+ 'configured',
2722
+ 'configured tasks'
2723
+ )));
2724
+ detected = detected.sort((a, b) => sorter.compare(a, b));
2725
+ fillEntries(entries, detected, ( localizeWithPath(
2726
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2727
+ 'detected',
2728
+ 'detected tasks'
2729
+ )));
2730
+ }
2731
+ }
2732
+ else {
2733
+ if (sort) {
2734
+ const sorter = this.createSorter();
2735
+ tasks = tasks.sort((a, b) => sorter.compare(a, b));
2736
+ }
2737
+ entries = ( tasks.map(task => TaskQuickPickEntry(task)));
2738
+ }
2739
+ encounteredTasks = {};
2740
+ return entries;
2741
+ }
2742
+ async _showTwoLevelQuickPick(placeHolder, defaultEntry, type, name) {
2743
+ return this._instantiationService.createInstance(TaskQuickPick).show(placeHolder, defaultEntry, type, name);
2744
+ }
2745
+ async _showQuickPick(tasks, placeHolder, defaultEntry, group = false, sort = false, selectedEntry, additionalEntries, name) {
2746
+ const resolvedTasks = await tasks;
2747
+ const entries = await raceTimeout(this._createTaskQuickPickEntries(resolvedTasks, group, sort, selectedEntry), 200, () => undefined);
2748
+ if (!entries) {
2749
+ return undefined;
2750
+ }
2751
+ if (entries.length === 1 && this._configurationService.getValue(QUICKOPEN_SKIP_CONFIG)) {
2752
+ return entries[0];
2753
+ }
2754
+ else if ((entries.length === 0) && defaultEntry) {
2755
+ entries.push(defaultEntry);
2756
+ }
2757
+ else if (entries.length > 1 && additionalEntries && additionalEntries.length > 0) {
2758
+ entries.push({ type: 'separator', label: '' });
2759
+ entries.push(additionalEntries[0]);
2760
+ }
2761
+ const picker = this._quickInputService.createQuickPick();
2762
+ picker.placeholder = placeHolder;
2763
+ picker.matchOnDescription = true;
2764
+ if (name) {
2765
+ picker.value = name;
2766
+ }
2767
+ picker.onDidTriggerItemButton(context => {
2768
+ const task = context.item.task;
2769
+ this._quickInputService.cancel();
2770
+ if (ContributedTask.is(task)) {
2771
+ this.customize(task, undefined, true);
2772
+ }
2773
+ else if (CustomTask.is(task)) {
2774
+ this.openConfig(task);
2775
+ }
2776
+ });
2777
+ picker.items = entries;
2778
+ picker.show();
2779
+ return ( new Promise(resolve => {
2780
+ this._register(picker.onDidAccept(async () => {
2781
+ const selectedEntry = picker.selectedItems ? picker.selectedItems[0] : undefined;
2782
+ picker.dispose();
2783
+ if (!selectedEntry) {
2784
+ resolve(undefined);
2785
+ }
2786
+ resolve(selectedEntry);
2787
+ }));
2788
+ }));
2789
+ }
2790
+ _needsRecentTasksMigration() {
2791
+ return (this.getRecentlyUsedTasksV1().size > 0) && (this._getTasksFromStorage('historical').size === 0);
2792
+ }
2793
+ async _migrateRecentTasks(tasks) {
2794
+ if (!this._needsRecentTasksMigration()) {
2795
+ return;
2796
+ }
2797
+ const recentlyUsedTasks = this.getRecentlyUsedTasksV1();
2798
+ const taskMap = Object.create(null);
2799
+ tasks.forEach(task => {
2800
+ const key = task.getKey();
2801
+ if (key) {
2802
+ taskMap[key] = task;
2803
+ }
2804
+ });
2805
+ const reversed = [...( recentlyUsedTasks.keys())].reverse();
2806
+ for (const key in reversed) {
2807
+ const task = taskMap[key];
2808
+ if (task) {
2809
+ await this._setRecentlyUsedTask(task);
2810
+ }
2811
+ }
2812
+ this._storageService.remove(AbstractTaskService_1.RecentlyUsedTasks_Key, 1 );
2813
+ }
2814
+ _showIgnoredFoldersMessage() {
2815
+ if (this.ignoredWorkspaceFolders.length === 0 || !this.showIgnoreMessage) {
2816
+ return Promise.resolve(undefined);
2817
+ }
2818
+ this._notificationService.prompt(Severity$1.Info, ( localizeWithPath(
2819
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2820
+ 'TaskService.ignoredFolder',
2821
+ 'The following workspace folders are ignored since they use task version 0.1.0: {0}',
2822
+ ( this.ignoredWorkspaceFolders.map(f => f.name)).join(', ')
2823
+ )), [{
2824
+ label: ( localizeWithPath(
2825
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2826
+ 'TaskService.notAgain',
2827
+ "Don't Show Again"
2828
+ )),
2829
+ isSecondary: true,
2830
+ run: () => {
2831
+ this._storageService.store(AbstractTaskService_1.IgnoreTask010DonotShowAgain_key, true, 1 , 1 );
2832
+ this._showIgnoreMessage = false;
2833
+ }
2834
+ }]);
2835
+ return Promise.resolve(undefined);
2836
+ }
2837
+ async _trust() {
2838
+ if (ServerlessWebContext && !TaskExecutionSupportedContext) {
2839
+ return false;
2840
+ }
2841
+ await this._workspaceTrustManagementService.workspaceTrustInitialized;
2842
+ if (!this._workspaceTrustManagementService.isWorkspaceTrusted()) {
2843
+ return (await this._workspaceTrustRequestService.requestWorkspaceTrust({
2844
+ message: ( localizeWithPath(
2845
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2846
+ 'TaskService.requestTrust',
2847
+ "Listing and running tasks requires that some of the files in this workspace be executed as code."
2848
+ ))
2849
+ })) === true;
2850
+ }
2851
+ return true;
2852
+ }
2853
+ async _runTaskCommand(filter) {
2854
+ if (!this._tasksReconnected) {
2855
+ return;
2856
+ }
2857
+ if (!filter) {
2858
+ return this._doRunTaskCommand();
2859
+ }
2860
+ const type = typeof filter === 'string' ? undefined : filter.type;
2861
+ const taskName = typeof filter === 'string' ? filter : filter.task;
2862
+ const grouped = await this._getGroupedTasks({ type });
2863
+ const identifier = this._getTaskIdentifier(filter);
2864
+ const tasks = grouped.all();
2865
+ const resolver = this._createResolver(grouped);
2866
+ const folderURIs = ( this._contextService.getWorkspace().folders.map(folder => folder.uri));
2867
+ if (this._contextService.getWorkbenchState() === 3 ) {
2868
+ folderURIs.push(this._contextService.getWorkspace().configuration);
2869
+ }
2870
+ folderURIs.push(USER_TASKS_GROUP_KEY);
2871
+ if (identifier) {
2872
+ for (const uri of folderURIs) {
2873
+ const task = await resolver.resolve(uri, identifier);
2874
+ if (task) {
2875
+ this.run(task);
2876
+ return;
2877
+ }
2878
+ }
2879
+ }
2880
+ const exactMatchTask = !taskName ? undefined : tasks.find(t => t.configurationProperties.identifier === taskName || t.getDefinition(true)?.configurationProperties?.identifier === taskName);
2881
+ if (!exactMatchTask) {
2882
+ return this._doRunTaskCommand(tasks, type, taskName);
2883
+ }
2884
+ for (const uri of folderURIs) {
2885
+ const task = await resolver.resolve(uri, taskName);
2886
+ if (task) {
2887
+ await this.run(task, { attachProblemMatcher: true }, 1 );
2888
+ return;
2889
+ }
2890
+ }
2891
+ }
2892
+ _tasksAndGroupedTasks(filter) {
2893
+ if (!this._versionAndEngineCompatible(filter)) {
2894
+ return { tasks: Promise.resolve([]), grouped: Promise.resolve(( new TaskMap())) };
2895
+ }
2896
+ const grouped = this._getGroupedTasks(filter);
2897
+ const tasks = grouped.then((map) => {
2898
+ if (!filter || !filter.type) {
2899
+ return map.all();
2900
+ }
2901
+ const result = [];
2902
+ map.forEach((tasks) => {
2903
+ for (const task of tasks) {
2904
+ if (ContributedTask.is(task) && task.defines.type === filter.type) {
2905
+ result.push(task);
2906
+ }
2907
+ else if (CustomTask.is(task)) {
2908
+ if (task.type === filter.type) {
2909
+ result.push(task);
2910
+ }
2911
+ else {
2912
+ const customizes = task.customizes();
2913
+ if (customizes && customizes.type === filter.type) {
2914
+ result.push(task);
2915
+ }
2916
+ }
2917
+ }
2918
+ }
2919
+ });
2920
+ return result;
2921
+ });
2922
+ return { tasks, grouped };
2923
+ }
2924
+ _doRunTaskCommand(tasks, type, name) {
2925
+ const pickThen = (task) => {
2926
+ if (task === undefined) {
2927
+ return;
2928
+ }
2929
+ if (task === null) {
2930
+ this._runConfigureTasks();
2931
+ }
2932
+ else {
2933
+ this.run(task, { attachProblemMatcher: true }, 1 ).then(undefined, reason => {
2934
+ });
2935
+ }
2936
+ };
2937
+ const placeholder = ( localizeWithPath(
2938
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2939
+ 'TaskService.pickRunTask',
2940
+ 'Select the task to run'
2941
+ ));
2942
+ this._showIgnoredFoldersMessage().then(() => {
2943
+ if (this._configurationService.getValue(USE_SLOW_PICKER)) {
2944
+ let taskResult = undefined;
2945
+ if (!tasks) {
2946
+ taskResult = this._tasksAndGroupedTasks();
2947
+ }
2948
+ this._showQuickPick(tasks ? tasks : taskResult.tasks, placeholder, {
2949
+ label: '$(plus) ' + ( localizeWithPath(
2950
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2951
+ 'TaskService.noEntryToRun',
2952
+ 'Configure a Task'
2953
+ )),
2954
+ task: null
2955
+ }, true, undefined, undefined, undefined, name).
2956
+ then((entry) => {
2957
+ return pickThen(entry ? entry.task : undefined);
2958
+ });
2959
+ }
2960
+ else {
2961
+ this._showTwoLevelQuickPick(placeholder, {
2962
+ label: '$(plus) ' + ( localizeWithPath(
2963
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
2964
+ 'TaskService.noEntryToRun',
2965
+ 'Configure a Task'
2966
+ )),
2967
+ task: null
2968
+ }, type, name).
2969
+ then(pickThen);
2970
+ }
2971
+ });
2972
+ }
2973
+ _reRunTaskCommand() {
2974
+ ProblemMatcherRegistry.onReady().then(() => {
2975
+ return this._editorService.saveAll({ reason: 2 }).then(() => {
2976
+ const executeResult = this._getTaskSystem().rerun();
2977
+ if (executeResult) {
2978
+ return this._handleExecuteResult(executeResult);
2979
+ }
2980
+ else {
2981
+ if (!this._taskRunningState.get()) {
2982
+ this._doRunTaskCommand();
2983
+ }
2984
+ return Promise.resolve(undefined);
2985
+ }
2986
+ });
2987
+ });
2988
+ }
2989
+ _getDefaultTasks(tasks, taskGlobsInList = false) {
2990
+ const defaults = [];
2991
+ for (const task of tasks) {
2992
+ if (taskGlobsInList && typeof task.configurationProperties.group.isDefault === 'string') {
2993
+ defaults.push(task);
2994
+ }
2995
+ else if (!taskGlobsInList && task.configurationProperties.group.isDefault === true) {
2996
+ defaults.push(task);
2997
+ }
2998
+ }
2999
+ return defaults;
3000
+ }
3001
+ _runTaskGroupCommand(taskGroup, strings, configure, legacyCommand) {
3002
+ if (this.schemaVersion === 1 ) {
3003
+ legacyCommand();
3004
+ return;
3005
+ }
3006
+ const options = {
3007
+ location: 10 ,
3008
+ title: strings.fetching
3009
+ };
3010
+ const promise = (async () => {
3011
+ let groupTasks = [];
3012
+ async function runSingleTask(task, problemMatcherOptions, that) {
3013
+ that.run(task, problemMatcherOptions, 1 ).then(undefined, reason => {
3014
+ });
3015
+ }
3016
+ const chooseAndRunTask = (tasks) => {
3017
+ this._showIgnoredFoldersMessage().then(() => {
3018
+ this._showQuickPick(tasks, strings.select, {
3019
+ label: strings.notFoundConfigure,
3020
+ task: null
3021
+ }, true).then((entry) => {
3022
+ const task = entry ? entry.task : undefined;
3023
+ if (task === undefined) {
3024
+ return;
3025
+ }
3026
+ if (task === null) {
3027
+ configure.apply(this);
3028
+ return;
3029
+ }
3030
+ runSingleTask(task, { attachProblemMatcher: true }, this);
3031
+ });
3032
+ });
3033
+ };
3034
+ let globTasksDetected = false;
3035
+ const absoluteURI = EditorResourceAccessor.getOriginalUri(this._editorService.activeEditor);
3036
+ if (absoluteURI) {
3037
+ const workspaceFolder = this._contextService.getWorkspaceFolder(absoluteURI);
3038
+ if (workspaceFolder) {
3039
+ const configuredTasks = this._getConfiguration(workspaceFolder)?.config?.tasks;
3040
+ if (configuredTasks) {
3041
+ globTasksDetected = configuredTasks.filter(task => task.group && typeof task.group !== 'string' && typeof task.group.isDefault === 'string').length > 0;
3042
+ if (globTasksDetected) {
3043
+ const relativePath$1 = workspaceFolder?.uri ? (relativePath(workspaceFolder.uri, absoluteURI) ?? absoluteURI.path) : absoluteURI.path;
3044
+ groupTasks = await this._findWorkspaceTasks((task) => {
3045
+ const currentTaskGroup = task.configurationProperties.group;
3046
+ if (currentTaskGroup && typeof currentTaskGroup !== 'string' && typeof currentTaskGroup.isDefault === 'string') {
3047
+ return (currentTaskGroup._id === taskGroup._id && match(currentTaskGroup.isDefault, relativePath$1));
3048
+ }
3049
+ return false;
3050
+ });
3051
+ }
3052
+ }
3053
+ }
3054
+ }
3055
+ if (!globTasksDetected && groupTasks.length === 0) {
3056
+ groupTasks = await this._findWorkspaceTasksInGroup(taskGroup, true);
3057
+ }
3058
+ const handleMultipleTasks = (areGlobTasks) => {
3059
+ return this._getTasksForGroup(taskGroup).then((tasks) => {
3060
+ if (tasks.length > 0) {
3061
+ const defaults = this._getDefaultTasks(tasks, areGlobTasks);
3062
+ if (defaults.length === 1) {
3063
+ runSingleTask(defaults[0], undefined, this);
3064
+ return;
3065
+ }
3066
+ else if (defaults.length > 0) {
3067
+ tasks = defaults;
3068
+ }
3069
+ }
3070
+ chooseAndRunTask(tasks);
3071
+ });
3072
+ };
3073
+ const resolveTaskAndRun = (taskGroupTask) => {
3074
+ if (ConfiguringTask.is(taskGroupTask)) {
3075
+ this.tryResolveTask(taskGroupTask).then(resolvedTask => {
3076
+ runSingleTask(resolvedTask, undefined, this);
3077
+ });
3078
+ }
3079
+ else {
3080
+ runSingleTask(taskGroupTask, undefined, this);
3081
+ }
3082
+ };
3083
+ if (groupTasks.length === 1) {
3084
+ return resolveTaskAndRun(groupTasks[0]);
3085
+ }
3086
+ if (globTasksDetected && groupTasks.length > 1) {
3087
+ return handleMultipleTasks(true);
3088
+ }
3089
+ if (!groupTasks.length) {
3090
+ groupTasks = await this._findWorkspaceTasksInGroup(taskGroup, false);
3091
+ }
3092
+ if (groupTasks.length === 1) {
3093
+ return resolveTaskAndRun(groupTasks[0]);
3094
+ }
3095
+ return handleMultipleTasks(false);
3096
+ })();
3097
+ this._progressService.withProgress(options, () => promise);
3098
+ }
3099
+ _runBuildCommand() {
3100
+ if (!this._tasksReconnected) {
3101
+ return;
3102
+ }
3103
+ return this._runTaskGroupCommand(TaskGroup.Build, {
3104
+ fetching: ( localizeWithPath(
3105
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3106
+ 'TaskService.fetchingBuildTasks',
3107
+ 'Fetching build tasks...'
3108
+ )),
3109
+ select: ( localizeWithPath(
3110
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3111
+ 'TaskService.pickBuildTask',
3112
+ 'Select the build task to run'
3113
+ )),
3114
+ notFoundConfigure: ( localizeWithPath(
3115
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3116
+ 'TaskService.noBuildTask',
3117
+ 'No build task to run found. Configure Build Task...'
3118
+ ))
3119
+ }, this._runConfigureDefaultBuildTask, this._build);
3120
+ }
3121
+ _runTestCommand() {
3122
+ return this._runTaskGroupCommand(TaskGroup.Test, {
3123
+ fetching: ( localizeWithPath(
3124
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3125
+ 'TaskService.fetchingTestTasks',
3126
+ 'Fetching test tasks...'
3127
+ )),
3128
+ select: ( localizeWithPath(
3129
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3130
+ 'TaskService.pickTestTask',
3131
+ 'Select the test task to run'
3132
+ )),
3133
+ notFoundConfigure: ( localizeWithPath(
3134
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3135
+ 'TaskService.noTestTaskTerminal',
3136
+ 'No test task to run found. Configure Tasks...'
3137
+ ))
3138
+ }, this._runConfigureDefaultTestTask, this._runTest);
3139
+ }
3140
+ _runTerminateCommand(arg) {
3141
+ if (arg === 'terminateAll') {
3142
+ this._terminateAll();
3143
+ return;
3144
+ }
3145
+ const runQuickPick = (promise) => {
3146
+ this._showQuickPick(promise || this.getActiveTasks(), ( localizeWithPath(
3147
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3148
+ 'TaskService.taskToTerminate',
3149
+ 'Select a task to terminate'
3150
+ )), {
3151
+ label: ( localizeWithPath(
3152
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3153
+ 'TaskService.noTaskRunning',
3154
+ 'No task is currently running'
3155
+ )),
3156
+ task: undefined
3157
+ }, false, true, undefined, [{
3158
+ label: ( localizeWithPath(
3159
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3160
+ 'TaskService.terminateAllRunningTasks',
3161
+ 'All Running Tasks'
3162
+ )),
3163
+ id: 'terminateAll',
3164
+ task: undefined
3165
+ }]).then(entry => {
3166
+ if (entry && entry.id === 'terminateAll') {
3167
+ this._terminateAll();
3168
+ }
3169
+ const task = entry ? entry.task : undefined;
3170
+ if (task === undefined || task === null) {
3171
+ return;
3172
+ }
3173
+ this.terminate(task);
3174
+ });
3175
+ };
3176
+ if (this.inTerminal()) {
3177
+ const identifier = this._getTaskIdentifier(arg);
3178
+ let promise;
3179
+ if (identifier !== undefined) {
3180
+ promise = this.getActiveTasks();
3181
+ promise.then((tasks) => {
3182
+ for (const task of tasks) {
3183
+ if (task.matches(identifier)) {
3184
+ this.terminate(task);
3185
+ return;
3186
+ }
3187
+ }
3188
+ runQuickPick(promise);
3189
+ });
3190
+ }
3191
+ else {
3192
+ runQuickPick();
3193
+ }
3194
+ }
3195
+ else {
3196
+ this._isActive().then((active) => {
3197
+ if (active) {
3198
+ this._terminateAll().then((responses) => {
3199
+ const response = responses[0];
3200
+ if (response.success) {
3201
+ return;
3202
+ }
3203
+ if (response.code && response.code === 3 ) {
3204
+ this._notificationService.error(( localizeWithPath(
3205
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3206
+ 'TerminateAction.noProcess',
3207
+ 'The launched process doesn\'t exist anymore. If the task spawned background tasks exiting VS Code might result in orphaned processes.'
3208
+ )));
3209
+ }
3210
+ else {
3211
+ this._notificationService.error(( localizeWithPath(
3212
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3213
+ 'TerminateAction.failed',
3214
+ 'Failed to terminate running task'
3215
+ )));
3216
+ }
3217
+ });
3218
+ }
3219
+ });
3220
+ }
3221
+ }
3222
+ async _runRestartTaskCommand(arg) {
3223
+ const activeTasks = await this.getActiveTasks();
3224
+ if (activeTasks.length === 1) {
3225
+ this._restart(activeTasks[0]);
3226
+ return;
3227
+ }
3228
+ if (this.inTerminal()) {
3229
+ const identifier = this._getTaskIdentifier(arg);
3230
+ if (identifier !== undefined) {
3231
+ for (const task of activeTasks) {
3232
+ if (task.matches(identifier)) {
3233
+ this._restart(task);
3234
+ return;
3235
+ }
3236
+ }
3237
+ }
3238
+ const entry = await this._showQuickPick(activeTasks, ( localizeWithPath(
3239
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3240
+ 'TaskService.taskToRestart',
3241
+ 'Select the task to restart'
3242
+ )), {
3243
+ label: ( localizeWithPath(
3244
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3245
+ 'TaskService.noTaskToRestart',
3246
+ 'No task to restart'
3247
+ )),
3248
+ task: null
3249
+ }, false, true);
3250
+ if (entry && entry.task) {
3251
+ this._restart(entry.task);
3252
+ }
3253
+ }
3254
+ else {
3255
+ if (activeTasks.length > 0) {
3256
+ this._restart(activeTasks[0]);
3257
+ }
3258
+ }
3259
+ }
3260
+ _getTaskIdentifier(filter) {
3261
+ let result = undefined;
3262
+ if (isString(filter)) {
3263
+ result = filter;
3264
+ }
3265
+ else if (filter && isString(filter.type)) {
3266
+ result = TaskDefinition.createTaskIdentifier(filter, console);
3267
+ }
3268
+ return result;
3269
+ }
3270
+ _configHasTasks(taskConfig) {
3271
+ return !!taskConfig && !!taskConfig.tasks && taskConfig.tasks.length > 0;
3272
+ }
3273
+ _openTaskFile(resource, taskSource) {
3274
+ let configFileCreated = false;
3275
+ this._fileService.stat(resource).then((stat) => stat, () => undefined).then(async (stat) => {
3276
+ const fileExists = !!stat;
3277
+ const configValue = this._configurationService.inspect('tasks');
3278
+ let tasksExistInFile;
3279
+ let target;
3280
+ switch (taskSource) {
3281
+ case TaskSourceKind.User:
3282
+ tasksExistInFile = this._configHasTasks(configValue.userValue);
3283
+ target = 2 ;
3284
+ break;
3285
+ case TaskSourceKind.WorkspaceFile:
3286
+ tasksExistInFile = this._configHasTasks(configValue.workspaceValue);
3287
+ target = 5 ;
3288
+ break;
3289
+ default:
3290
+ tasksExistInFile = this._configHasTasks(configValue.workspaceFolderValue);
3291
+ target = 6 ;
3292
+ }
3293
+ let content;
3294
+ if (!tasksExistInFile) {
3295
+ const pickTemplateResult = await this._quickInputService.pick(getTemplates(), { placeHolder: ( localizeWithPath(
3296
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3297
+ 'TaskService.template',
3298
+ 'Select a Task Template'
3299
+ )) });
3300
+ if (!pickTemplateResult) {
3301
+ return Promise.resolve(undefined);
3302
+ }
3303
+ content = pickTemplateResult.content;
3304
+ const editorConfig = this._configurationService.getValue();
3305
+ if (editorConfig.editor.insertSpaces) {
3306
+ content = content.replace(/(\n)(\t+)/g, (_, s1, s2) => s1 + ' '.repeat(s2.length * editorConfig.editor.tabSize));
3307
+ }
3308
+ configFileCreated = true;
3309
+ }
3310
+ if (!fileExists && content) {
3311
+ return this._textFileService.create([{ resource, value: content }]).then(result => {
3312
+ return result[0].resource;
3313
+ });
3314
+ }
3315
+ else if (fileExists && (tasksExistInFile || content)) {
3316
+ if (content) {
3317
+ this._configurationService.updateValue('tasks', parse$1(content), target);
3318
+ }
3319
+ return stat?.resource;
3320
+ }
3321
+ return undefined;
3322
+ }).then((resource) => {
3323
+ if (!resource) {
3324
+ return;
3325
+ }
3326
+ this._editorService.openEditor({
3327
+ resource,
3328
+ options: {
3329
+ pinned: configFileCreated
3330
+ }
3331
+ });
3332
+ });
3333
+ }
3334
+ _isTaskEntry(value) {
3335
+ const candidate = value;
3336
+ return candidate && !!candidate.task;
3337
+ }
3338
+ _isSettingEntry(value) {
3339
+ const candidate = value;
3340
+ return candidate && !!candidate.settingType;
3341
+ }
3342
+ _configureTask(task) {
3343
+ if (ContributedTask.is(task)) {
3344
+ this.customize(task, undefined, true);
3345
+ }
3346
+ else if (CustomTask.is(task)) {
3347
+ this.openConfig(task);
3348
+ }
3349
+ else if (ConfiguringTask.is(task)) ;
3350
+ }
3351
+ _handleSelection(selection) {
3352
+ if (!selection) {
3353
+ return;
3354
+ }
3355
+ if (this._isTaskEntry(selection)) {
3356
+ this._configureTask(selection.task);
3357
+ }
3358
+ else if (this._isSettingEntry(selection)) {
3359
+ const taskQuickPick = this._instantiationService.createInstance(TaskQuickPick);
3360
+ taskQuickPick.handleSettingOption(selection.settingType);
3361
+ }
3362
+ else if (selection.folder && ((this._contextService.getWorkbenchState() !== 1) )) {
3363
+ this._openTaskFile(selection.folder.toResource('.vscode/tasks.json'), TaskSourceKind.Workspace);
3364
+ }
3365
+ else {
3366
+ const resource = this._getResourceForKind(TaskSourceKind.User);
3367
+ if (resource) {
3368
+ this._openTaskFile(resource, TaskSourceKind.User);
3369
+ }
3370
+ }
3371
+ }
3372
+ getTaskDescription(task) {
3373
+ let description;
3374
+ if (task._source.kind === TaskSourceKind.User) {
3375
+ description = ( localizeWithPath(
3376
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3377
+ 'taskQuickPick.userSettings',
3378
+ 'User'
3379
+ ));
3380
+ }
3381
+ else if (task._source.kind === TaskSourceKind.WorkspaceFile) {
3382
+ description = task.getWorkspaceFileName();
3383
+ }
3384
+ else if (this.needsFolderQualification()) {
3385
+ const workspaceFolder = task.getWorkspaceFolder();
3386
+ if (workspaceFolder) {
3387
+ description = workspaceFolder.name;
3388
+ }
3389
+ }
3390
+ return description;
3391
+ }
3392
+ async _runConfigureTasks() {
3393
+ if (!(await this._trust())) {
3394
+ return;
3395
+ }
3396
+ let taskPromise;
3397
+ if (this.schemaVersion === 2 ) {
3398
+ taskPromise = this._getGroupedTasks();
3399
+ }
3400
+ else {
3401
+ taskPromise = Promise.resolve(( new TaskMap()));
3402
+ }
3403
+ const stats = ( this._contextService.getWorkspace().folders.map((folder) => {
3404
+ return this._fileService.stat(folder.toResource('.vscode/tasks.json')).then(stat => stat, () => undefined);
3405
+ }));
3406
+ const createLabel = ( localizeWithPath(
3407
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3408
+ 'TaskService.createJsonFile',
3409
+ 'Create tasks.json file from template'
3410
+ ));
3411
+ const openLabel = ( localizeWithPath(
3412
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3413
+ 'TaskService.openJsonFile',
3414
+ 'Open tasks.json file'
3415
+ ));
3416
+ const tokenSource = ( new CancellationTokenSource());
3417
+ const cancellationToken = tokenSource.token;
3418
+ const entries = Promise.all(stats).then((stats) => {
3419
+ return taskPromise.then((taskMap) => {
3420
+ const entries = [];
3421
+ let configuredCount = 0;
3422
+ let tasks = taskMap.all();
3423
+ if (tasks.length > 0) {
3424
+ tasks = tasks.sort((a, b) => a._label.localeCompare(b._label));
3425
+ for (const task of tasks) {
3426
+ const entry = { label: TaskQuickPick.getTaskLabelWithIcon(task), task, description: this.getTaskDescription(task), detail: this._showDetail() ? task.configurationProperties.detail : undefined };
3427
+ TaskQuickPick.applyColorStyles(task, entry, this._themeService);
3428
+ entries.push(entry);
3429
+ if (!ContributedTask.is(task)) {
3430
+ configuredCount++;
3431
+ }
3432
+ }
3433
+ }
3434
+ const needsCreateOrOpen = (configuredCount === 0);
3435
+ if (needsCreateOrOpen || (taskMap.get(USER_TASKS_GROUP_KEY).length === configuredCount)) {
3436
+ const label = stats[0] !== undefined ? openLabel : createLabel;
3437
+ if (entries.length) {
3438
+ entries.push({ type: 'separator' });
3439
+ }
3440
+ entries.push({ label, folder: this._contextService.getWorkspace().folders[0] });
3441
+ }
3442
+ if ((entries.length === 1) && !needsCreateOrOpen) {
3443
+ tokenSource.cancel();
3444
+ }
3445
+ return entries;
3446
+ });
3447
+ });
3448
+ const timeout = await Promise.race([( new Promise((resolve) => {
3449
+ entries.then(() => resolve(false));
3450
+ })), ( new Promise((resolve) => {
3451
+ const timer = setTimeout(() => {
3452
+ clearTimeout(timer);
3453
+ resolve(true);
3454
+ }, 200);
3455
+ }))]);
3456
+ if (!timeout && ((await entries).length === 1) && this._configurationService.getValue(QUICKOPEN_SKIP_CONFIG)) {
3457
+ const entry = ((await entries)[0]);
3458
+ if (entry.task) {
3459
+ this._handleSelection(entry);
3460
+ return;
3461
+ }
3462
+ }
3463
+ const entriesWithSettings = entries.then(resolvedEntries => {
3464
+ resolvedEntries.push(...TaskQuickPick.allSettingEntries(this._configurationService));
3465
+ return resolvedEntries;
3466
+ });
3467
+ this._quickInputService.pick(entriesWithSettings, { placeHolder: ( localizeWithPath(
3468
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3469
+ 'TaskService.pickTask',
3470
+ 'Select a task to configure'
3471
+ )) }, cancellationToken).
3472
+ then(async (selection) => {
3473
+ if (cancellationToken.isCancellationRequested) {
3474
+ const task = (await entries)[0];
3475
+ if (task.task) {
3476
+ selection = task;
3477
+ }
3478
+ }
3479
+ this._handleSelection(selection);
3480
+ });
3481
+ }
3482
+ _runConfigureDefaultBuildTask() {
3483
+ if (this.schemaVersion === 2 ) {
3484
+ this.tasks().then((tasks => {
3485
+ if (tasks.length === 0) {
3486
+ this._runConfigureTasks();
3487
+ return;
3488
+ }
3489
+ const entries = [];
3490
+ let selectedTask;
3491
+ let selectedEntry;
3492
+ this._showIgnoredFoldersMessage().then(() => {
3493
+ for (const task of tasks) {
3494
+ const taskGroup = TaskGroup.from(task.configurationProperties.group);
3495
+ if (taskGroup && taskGroup.isDefault && taskGroup._id === TaskGroup.Build._id) {
3496
+ const label = ( localizeWithPath(
3497
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3498
+ 'TaskService.defaultBuildTaskExists',
3499
+ '{0} is already marked as the default build task',
3500
+ TaskQuickPick.getTaskLabelWithIcon(task, task.getQualifiedLabel())
3501
+ ));
3502
+ selectedTask = task;
3503
+ selectedEntry = { label, task, description: this.getTaskDescription(task), detail: this._showDetail() ? task.configurationProperties.detail : undefined };
3504
+ TaskQuickPick.applyColorStyles(task, selectedEntry, this._themeService);
3505
+ }
3506
+ else {
3507
+ const entry = { label: TaskQuickPick.getTaskLabelWithIcon(task), task, description: this.getTaskDescription(task), detail: this._showDetail() ? task.configurationProperties.detail : undefined };
3508
+ TaskQuickPick.applyColorStyles(task, entry, this._themeService);
3509
+ entries.push(entry);
3510
+ }
3511
+ }
3512
+ if (selectedEntry) {
3513
+ entries.unshift(selectedEntry);
3514
+ }
3515
+ const tokenSource = ( new CancellationTokenSource());
3516
+ const cancellationToken = tokenSource.token;
3517
+ this._quickInputService.pick(entries, { placeHolder: ( localizeWithPath(
3518
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3519
+ 'TaskService.pickTask',
3520
+ 'Select a task to configure'
3521
+ )) }, cancellationToken).
3522
+ then(async (entry) => {
3523
+ if (cancellationToken.isCancellationRequested) {
3524
+ const task = (await entries)[0];
3525
+ if (task.task) {
3526
+ entry = task;
3527
+ }
3528
+ }
3529
+ const task = entry && 'task' in entry ? entry.task : undefined;
3530
+ if ((task === undefined) || (task === null)) {
3531
+ return;
3532
+ }
3533
+ if (task === selectedTask && CustomTask.is(task)) {
3534
+ this.openConfig(task);
3535
+ }
3536
+ if (!InMemoryTask.is(task)) {
3537
+ this.customize(task, { group: { kind: 'build', isDefault: true } }, true).then(() => {
3538
+ if (selectedTask && (task !== selectedTask) && !InMemoryTask.is(selectedTask)) {
3539
+ this.customize(selectedTask, { group: 'build' }, false);
3540
+ }
3541
+ });
3542
+ }
3543
+ });
3544
+ this._quickInputService.pick(entries, {
3545
+ placeHolder: ( localizeWithPath(
3546
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3547
+ 'TaskService.pickDefaultBuildTask',
3548
+ 'Select the task to be used as the default build task'
3549
+ ))
3550
+ }).
3551
+ then((entry) => {
3552
+ const task = entry && 'task' in entry ? entry.task : undefined;
3553
+ if ((task === undefined) || (task === null)) {
3554
+ return;
3555
+ }
3556
+ if (task === selectedTask && CustomTask.is(task)) {
3557
+ this.openConfig(task);
3558
+ }
3559
+ if (!InMemoryTask.is(task)) {
3560
+ this.customize(task, { group: { kind: 'build', isDefault: true } }, true).then(() => {
3561
+ if (selectedTask && (task !== selectedTask) && !InMemoryTask.is(selectedTask)) {
3562
+ this.customize(selectedTask, { group: 'build' }, false);
3563
+ }
3564
+ });
3565
+ }
3566
+ });
3567
+ });
3568
+ }));
3569
+ }
3570
+ else {
3571
+ this._runConfigureTasks();
3572
+ }
3573
+ }
3574
+ _runConfigureDefaultTestTask() {
3575
+ if (this.schemaVersion === 2 ) {
3576
+ this.tasks().then((tasks => {
3577
+ if (tasks.length === 0) {
3578
+ this._runConfigureTasks();
3579
+ return;
3580
+ }
3581
+ let selectedTask;
3582
+ let selectedEntry;
3583
+ for (const task of tasks) {
3584
+ const taskGroup = TaskGroup.from(task.configurationProperties.group);
3585
+ if (taskGroup && taskGroup.isDefault && taskGroup._id === TaskGroup.Test._id) {
3586
+ selectedTask = task;
3587
+ break;
3588
+ }
3589
+ }
3590
+ if (selectedTask) {
3591
+ selectedEntry = {
3592
+ label: ( localizeWithPath(
3593
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3594
+ 'TaskService.defaultTestTaskExists',
3595
+ '{0} is already marked as the default test task.',
3596
+ selectedTask.getQualifiedLabel()
3597
+ )),
3598
+ task: selectedTask,
3599
+ detail: this._showDetail() ? selectedTask.configurationProperties.detail : undefined
3600
+ };
3601
+ }
3602
+ this._showIgnoredFoldersMessage().then(() => {
3603
+ this._showQuickPick(tasks, ( localizeWithPath(
3604
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3605
+ 'TaskService.pickDefaultTestTask',
3606
+ 'Select the task to be used as the default test task'
3607
+ )), undefined, true, false, selectedEntry).then((entry) => {
3608
+ const task = entry ? entry.task : undefined;
3609
+ if (!task) {
3610
+ return;
3611
+ }
3612
+ if (task === selectedTask && CustomTask.is(task)) {
3613
+ this.openConfig(task);
3614
+ }
3615
+ if (!InMemoryTask.is(task)) {
3616
+ this.customize(task, { group: { kind: 'test', isDefault: true } }, true).then(() => {
3617
+ if (selectedTask && (task !== selectedTask) && !InMemoryTask.is(selectedTask)) {
3618
+ this.customize(selectedTask, { group: 'test' }, false);
3619
+ }
3620
+ });
3621
+ }
3622
+ });
3623
+ });
3624
+ }));
3625
+ }
3626
+ else {
3627
+ this._runConfigureTasks();
3628
+ }
3629
+ }
3630
+ async runShowTasks() {
3631
+ const activeTasksPromise = this.getActiveTasks();
3632
+ const activeTasks = await activeTasksPromise;
3633
+ let group;
3634
+ if (activeTasks.length === 1) {
3635
+ this._taskSystem.revealTask(activeTasks[0]);
3636
+ }
3637
+ else if (activeTasks.length && activeTasks.every((task) => {
3638
+ if (InMemoryTask.is(task)) {
3639
+ return false;
3640
+ }
3641
+ if (!group) {
3642
+ group = task.command.presentation?.group;
3643
+ }
3644
+ return task.command.presentation?.group && (task.command.presentation.group === group);
3645
+ })) {
3646
+ this._taskSystem.revealTask(activeTasks[0]);
3647
+ }
3648
+ else {
3649
+ this._showQuickPick(activeTasksPromise, ( localizeWithPath(
3650
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3651
+ 'TaskService.pickShowTask',
3652
+ 'Select the task to show its output'
3653
+ )), {
3654
+ label: ( localizeWithPath(
3655
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3656
+ 'TaskService.noTaskIsRunning',
3657
+ 'No task is running'
3658
+ )),
3659
+ task: null
3660
+ }, false, true).then((entry) => {
3661
+ const task = entry ? entry.task : undefined;
3662
+ if (task === undefined || task === null) {
3663
+ return;
3664
+ }
3665
+ this._taskSystem.revealTask(task);
3666
+ });
3667
+ }
3668
+ }
3669
+ async _createTasksDotOld(folder) {
3670
+ const tasksFile = folder.toResource('.vscode/tasks.json');
3671
+ if (await this._fileService.exists(tasksFile)) {
3672
+ const oldFile = tasksFile.with({ path: `${tasksFile.path}.old` });
3673
+ await this._fileService.copy(tasksFile, oldFile, true);
3674
+ return [oldFile, tasksFile];
3675
+ }
3676
+ return undefined;
3677
+ }
3678
+ _upgradeTask(task, suppressTaskName, globalConfig) {
3679
+ if (!CustomTask.is(task)) {
3680
+ return;
3681
+ }
3682
+ const configElement = {
3683
+ label: task._label
3684
+ };
3685
+ const oldTaskTypes = ( new Set(['gulp', 'jake', 'grunt']));
3686
+ if (isString(task.command.name) && ( oldTaskTypes.has(task.command.name))) {
3687
+ configElement.type = task.command.name;
3688
+ configElement.task = task.command.args[0];
3689
+ }
3690
+ else {
3691
+ if (task.command.runtime === RuntimeType.Shell) {
3692
+ configElement.type = ( RuntimeType.toString(RuntimeType.Shell));
3693
+ }
3694
+ if (task.command.name && !suppressTaskName && !globalConfig.windows?.command && !globalConfig.osx?.command && !globalConfig.linux?.command) {
3695
+ configElement.command = task.command.name;
3696
+ }
3697
+ else if (suppressTaskName) {
3698
+ configElement.command = task._source.config.element.command;
3699
+ }
3700
+ if (task.command.args && (!Array.isArray(task.command.args) || (task.command.args.length > 0))) {
3701
+ if (!globalConfig.windows?.args && !globalConfig.osx?.args && !globalConfig.linux?.args) {
3702
+ configElement.args = task.command.args;
3703
+ }
3704
+ else {
3705
+ configElement.args = task._source.config.element.args;
3706
+ }
3707
+ }
3708
+ }
3709
+ if (task.configurationProperties.presentation) {
3710
+ configElement.presentation = task.configurationProperties.presentation;
3711
+ }
3712
+ if (task.configurationProperties.isBackground) {
3713
+ configElement.isBackground = task.configurationProperties.isBackground;
3714
+ }
3715
+ if (task.configurationProperties.problemMatchers) {
3716
+ configElement.problemMatcher = task._source.config.element.problemMatcher;
3717
+ }
3718
+ if (task.configurationProperties.group) {
3719
+ configElement.group = task.configurationProperties.group;
3720
+ }
3721
+ task._source.config.element = configElement;
3722
+ const tempTask = ( new CustomTask(
3723
+ task._id,
3724
+ task._source,
3725
+ task._label,
3726
+ task.type,
3727
+ task.command,
3728
+ task.hasDefinedMatchers,
3729
+ task.runOptions,
3730
+ task.configurationProperties
3731
+ ));
3732
+ const configTask = this._createCustomizableTask(tempTask);
3733
+ if (configTask) {
3734
+ return configTask;
3735
+ }
3736
+ return;
3737
+ }
3738
+ async _upgrade() {
3739
+ if (this.schemaVersion === 2 ) {
3740
+ return;
3741
+ }
3742
+ if (!this._workspaceTrustManagementService.isWorkspaceTrusted()) {
3743
+ this._register(Event.once(this._workspaceTrustManagementService.onDidChangeTrust)(isTrusted => {
3744
+ if (isTrusted) {
3745
+ this._upgrade();
3746
+ }
3747
+ }));
3748
+ return;
3749
+ }
3750
+ const tasks = await this._getGroupedTasks();
3751
+ const fileDiffs = [];
3752
+ for (const folder of this.workspaceFolders) {
3753
+ const diff = await this._createTasksDotOld(folder);
3754
+ if (diff) {
3755
+ fileDiffs.push(diff);
3756
+ }
3757
+ if (!diff) {
3758
+ continue;
3759
+ }
3760
+ const configTasks = [];
3761
+ const suppressTaskName = !!this._configurationService.getValue("tasks.suppressTaskName" , { resource: folder.uri });
3762
+ const globalConfig = {
3763
+ windows: this._configurationService.getValue("tasks.windows" , { resource: folder.uri }),
3764
+ osx: this._configurationService.getValue("tasks.osx" , { resource: folder.uri }),
3765
+ linux: this._configurationService.getValue("tasks.linux" , { resource: folder.uri })
3766
+ };
3767
+ tasks.get(folder).forEach(task => {
3768
+ const configTask = this._upgradeTask(task, suppressTaskName, globalConfig);
3769
+ if (configTask) {
3770
+ configTasks.push(configTask);
3771
+ }
3772
+ });
3773
+ this._taskSystem = undefined;
3774
+ this._workspaceTasksPromise = undefined;
3775
+ await this._writeConfiguration(folder, 'tasks.tasks', configTasks);
3776
+ await this._writeConfiguration(folder, 'tasks.version', '2.0.0');
3777
+ if (this._configurationService.getValue("tasks.showOutput" , { resource: folder.uri })) {
3778
+ await this._configurationService.updateValue("tasks.showOutput" , undefined, { resource: folder.uri });
3779
+ }
3780
+ if (this._configurationService.getValue("tasks.isShellCommand" , { resource: folder.uri })) {
3781
+ await this._configurationService.updateValue("tasks.isShellCommand" , undefined, { resource: folder.uri });
3782
+ }
3783
+ if (this._configurationService.getValue("tasks.suppressTaskName" , { resource: folder.uri })) {
3784
+ await this._configurationService.updateValue("tasks.suppressTaskName" , undefined, { resource: folder.uri });
3785
+ }
3786
+ }
3787
+ this._updateSetup();
3788
+ this._notificationService.prompt(Severity$1.Warning, fileDiffs.length === 1 ?
3789
+ ( localizeWithPath(
3790
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3791
+ 'taskService.upgradeVersion',
3792
+ "The deprecated tasks version 0.1.0 has been removed. Your tasks have been upgraded to version 2.0.0. Open the diff to review the upgrade."
3793
+ ))
3794
+ : ( localizeWithPath(
3795
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3796
+ 'taskService.upgradeVersionPlural',
3797
+ "The deprecated tasks version 0.1.0 has been removed. Your tasks have been upgraded to version 2.0.0. Open the diffs to review the upgrade."
3798
+ )), [{
3799
+ label: fileDiffs.length === 1 ? ( localizeWithPath(
3800
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3801
+ 'taskService.openDiff',
3802
+ "Open diff"
3803
+ )) : ( localizeWithPath(
3804
+ 'vs/workbench/contrib/tasks/browser/abstractTaskService',
3805
+ 'taskService.openDiffs',
3806
+ "Open diffs"
3807
+ )),
3808
+ run: async () => {
3809
+ for (const upgrade of fileDiffs) {
3810
+ await this._editorService.openEditor({
3811
+ original: { resource: upgrade[0] },
3812
+ modified: { resource: upgrade[1] }
3813
+ });
3814
+ }
3815
+ }
3816
+ }]);
3817
+ }
3818
+ };
3819
+ AbstractTaskService = AbstractTaskService_1 = ( __decorate([
3820
+ ( __param(0, IConfigurationService)),
3821
+ ( __param(1, IMarkerService)),
3822
+ ( __param(2, IOutputService)),
3823
+ ( __param(3, IPaneCompositePartService)),
3824
+ ( __param(4, IViewsService)),
3825
+ ( __param(5, ICommandService)),
3826
+ ( __param(6, IEditorService)),
3827
+ ( __param(7, IFileService)),
3828
+ ( __param(8, IWorkspaceContextService)),
3829
+ ( __param(9, ITelemetryService)),
3830
+ ( __param(10, ITextFileService)),
3831
+ ( __param(11, IModelService)),
3832
+ ( __param(12, IExtensionService)),
3833
+ ( __param(13, IQuickInputService)),
3834
+ ( __param(14, IConfigurationResolverService)),
3835
+ ( __param(15, ITerminalService)),
3836
+ ( __param(16, ITerminalGroupService)),
3837
+ ( __param(17, IStorageService)),
3838
+ ( __param(18, IProgressService)),
3839
+ ( __param(19, IOpenerService)),
3840
+ ( __param(20, IDialogService)),
3841
+ ( __param(21, INotificationService)),
3842
+ ( __param(22, IContextKeyService)),
3843
+ ( __param(23, IWorkbenchEnvironmentService)),
3844
+ ( __param(24, ITerminalProfileResolverService)),
3845
+ ( __param(25, IPathService)),
3846
+ ( __param(26, ITextModelService)),
3847
+ ( __param(27, IPreferencesService)),
3848
+ ( __param(28, IViewDescriptorService)),
3849
+ ( __param(29, IWorkspaceTrustRequestService)),
3850
+ ( __param(30, IWorkspaceTrustManagementService)),
3851
+ ( __param(31, ILogService)),
3852
+ ( __param(32, IThemeService)),
3853
+ ( __param(33, ILifecycleService)),
3854
+ ( __param(34, IRemoteAgentService)),
3855
+ ( __param(35, IInstantiationService))
3856
+ ], AbstractTaskService));
3857
+ export { AbstractTaskService, ConfigureTaskAction };