@opensumi/ide-terminal-next 2.12.1-next-079c1930

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 (282) hide show
  1. package/README.md +89 -0
  2. package/lib/browser/component/resize.delegate.d.ts +14 -0
  3. package/lib/browser/component/resize.delegate.d.ts.map +1 -0
  4. package/lib/browser/component/resize.delegate.js +47 -0
  5. package/lib/browser/component/resize.delegate.js.map +1 -0
  6. package/lib/browser/component/resize.module.less +55 -0
  7. package/lib/browser/component/resize.view.d.ts +16 -0
  8. package/lib/browser/component/resize.view.d.ts.map +1 -0
  9. package/lib/browser/component/resize.view.js +40 -0
  10. package/lib/browser/component/resize.view.js.map +1 -0
  11. package/lib/browser/component/tab.item.d.ts +7 -0
  12. package/lib/browser/component/tab.item.d.ts.map +1 -0
  13. package/lib/browser/component/tab.item.js +61 -0
  14. package/lib/browser/component/tab.item.js.map +1 -0
  15. package/lib/browser/component/tab.module.less +112 -0
  16. package/lib/browser/component/tab.view.d.ts +4 -0
  17. package/lib/browser/component/tab.view.d.ts.map +1 -0
  18. package/lib/browser/component/tab.view.js +30 -0
  19. package/lib/browser/component/tab.view.js.map +1 -0
  20. package/lib/browser/component/terminal.module.less +69 -0
  21. package/lib/browser/component/terminal.select.d.ts +4 -0
  22. package/lib/browser/component/terminal.select.d.ts.map +1 -0
  23. package/lib/browser/component/terminal.select.js +21 -0
  24. package/lib/browser/component/terminal.select.js.map +1 -0
  25. package/lib/browser/component/terminal.variable.d.ts +8 -0
  26. package/lib/browser/component/terminal.variable.d.ts.map +1 -0
  27. package/lib/browser/component/terminal.variable.js +44 -0
  28. package/lib/browser/component/terminal.variable.js.map +1 -0
  29. package/lib/browser/component/terminal.view.d.ts +5 -0
  30. package/lib/browser/component/terminal.view.d.ts.map +1 -0
  31. package/lib/browser/component/terminal.view.js +68 -0
  32. package/lib/browser/component/terminal.view.js.map +1 -0
  33. package/lib/browser/component/terminal.widget.d.ts +10 -0
  34. package/lib/browser/component/terminal.widget.d.ts.map +1 -0
  35. package/lib/browser/component/terminal.widget.js +51 -0
  36. package/lib/browser/component/terminal.widget.js.map +1 -0
  37. package/lib/browser/component/variable.module.less +15 -0
  38. package/lib/browser/contribution/index.d.ts +7 -0
  39. package/lib/browser/contribution/index.d.ts.map +1 -0
  40. package/lib/browser/contribution/index.js +10 -0
  41. package/lib/browser/contribution/index.js.map +1 -0
  42. package/lib/browser/contribution/terminal.command.d.ts +20 -0
  43. package/lib/browser/contribution/terminal.command.d.ts.map +1 -0
  44. package/lib/browser/contribution/terminal.command.js +215 -0
  45. package/lib/browser/contribution/terminal.command.js.map +1 -0
  46. package/lib/browser/contribution/terminal.keybinding.d.ts +5 -0
  47. package/lib/browser/contribution/terminal.keybinding.d.ts.map +1 -0
  48. package/lib/browser/contribution/terminal.keybinding.js +55 -0
  49. package/lib/browser/contribution/terminal.keybinding.js.map +1 -0
  50. package/lib/browser/contribution/terminal.lifecycle.d.ts +15 -0
  51. package/lib/browser/contribution/terminal.lifecycle.d.ts.map +1 -0
  52. package/lib/browser/contribution/terminal.lifecycle.js +47 -0
  53. package/lib/browser/contribution/terminal.lifecycle.js.map +1 -0
  54. package/lib/browser/contribution/terminal.menu.d.ts +19 -0
  55. package/lib/browser/contribution/terminal.menu.d.ts.map +1 -0
  56. package/lib/browser/contribution/terminal.menu.js +144 -0
  57. package/lib/browser/contribution/terminal.menu.js.map +1 -0
  58. package/lib/browser/contribution/terminal.network.d.ts +11 -0
  59. package/lib/browser/contribution/terminal.network.d.ts.map +1 -0
  60. package/lib/browser/contribution/terminal.network.js +44 -0
  61. package/lib/browser/contribution/terminal.network.js.map +1 -0
  62. package/lib/browser/contribution/terminal.view.d.ts +7 -0
  63. package/lib/browser/contribution/terminal.view.d.ts.map +1 -0
  64. package/lib/browser/contribution/terminal.view.js +55 -0
  65. package/lib/browser/contribution/terminal.view.js.map +1 -0
  66. package/lib/browser/index.d.ts +10 -0
  67. package/lib/browser/index.d.ts.map +1 -0
  68. package/lib/browser/index.js +105 -0
  69. package/lib/browser/index.js.map +1 -0
  70. package/lib/browser/links/base.d.ts +8 -0
  71. package/lib/browser/links/base.d.ts.map +1 -0
  72. package/lib/browser/links/base.js +13 -0
  73. package/lib/browser/links/base.js.map +1 -0
  74. package/lib/browser/links/external-link-provider-adapter.d.ts +18 -0
  75. package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
  76. package/lib/browser/links/external-link-provider-adapter.js +56 -0
  77. package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
  78. package/lib/browser/links/helpers.d.ts +7 -0
  79. package/lib/browser/links/helpers.d.ts.map +1 -0
  80. package/lib/browser/links/helpers.js +129 -0
  81. package/lib/browser/links/helpers.js.map +1 -0
  82. package/lib/browser/links/link-manager.d.ts +61 -0
  83. package/lib/browser/links/link-manager.d.ts.map +1 -0
  84. package/lib/browser/links/link-manager.js +252 -0
  85. package/lib/browser/links/link-manager.js.map +1 -0
  86. package/lib/browser/links/link.d.ts +24 -0
  87. package/lib/browser/links/link.d.ts.map +1 -0
  88. package/lib/browser/links/link.js +92 -0
  89. package/lib/browser/links/link.js.map +1 -0
  90. package/lib/browser/links/protocol-link-provider.d.ts +11 -0
  91. package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
  92. package/lib/browser/links/protocol-link-provider.js +53 -0
  93. package/lib/browser/links/protocol-link-provider.js.map +1 -0
  94. package/lib/browser/links/validated-local-link-provider.d.ts +31 -0
  95. package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
  96. package/lib/browser/links/validated-local-link-provider.js +137 -0
  97. package/lib/browser/links/validated-local-link-provider.js.map +1 -0
  98. package/lib/browser/terminal.addon.d.ts +42 -0
  99. package/lib/browser/terminal.addon.d.ts.map +1 -0
  100. package/lib/browser/terminal.addon.js +169 -0
  101. package/lib/browser/terminal.addon.js.map +1 -0
  102. package/lib/browser/terminal.api.d.ts +34 -0
  103. package/lib/browser/terminal.api.d.ts.map +1 -0
  104. package/lib/browser/terminal.api.js +132 -0
  105. package/lib/browser/terminal.api.js.map +1 -0
  106. package/lib/browser/terminal.client.d.ts +114 -0
  107. package/lib/browser/terminal.client.d.ts.map +1 -0
  108. package/lib/browser/terminal.client.js +518 -0
  109. package/lib/browser/terminal.client.js.map +1 -0
  110. package/lib/browser/terminal.color.d.ts +20 -0
  111. package/lib/browser/terminal.color.d.ts.map +1 -0
  112. package/lib/browser/terminal.color.js +172 -0
  113. package/lib/browser/terminal.color.js.map +1 -0
  114. package/lib/browser/terminal.context-key.d.ts +10 -0
  115. package/lib/browser/terminal.context-key.d.ts.map +1 -0
  116. package/lib/browser/terminal.context-key.js +28 -0
  117. package/lib/browser/terminal.context-key.js.map +1 -0
  118. package/lib/browser/terminal.context-menu.d.ts +15 -0
  119. package/lib/browser/terminal.context-menu.d.ts.map +1 -0
  120. package/lib/browser/terminal.context-menu.js +75 -0
  121. package/lib/browser/terminal.context-menu.js.map +1 -0
  122. package/lib/browser/terminal.controller.d.ts +68 -0
  123. package/lib/browser/terminal.controller.d.ts.map +1 -0
  124. package/lib/browser/terminal.controller.js +367 -0
  125. package/lib/browser/terminal.controller.js.map +1 -0
  126. package/lib/browser/terminal.environment.service.d.ts +27 -0
  127. package/lib/browser/terminal.environment.service.d.ts.map +1 -0
  128. package/lib/browser/terminal.environment.service.js +144 -0
  129. package/lib/browser/terminal.environment.service.js.map +1 -0
  130. package/lib/browser/terminal.error.d.ts +10 -0
  131. package/lib/browser/terminal.error.d.ts.map +1 -0
  132. package/lib/browser/terminal.error.js +58 -0
  133. package/lib/browser/terminal.error.js.map +1 -0
  134. package/lib/browser/terminal.ext.host.proxy.d.ts +58 -0
  135. package/lib/browser/terminal.ext.host.proxy.d.ts.map +1 -0
  136. package/lib/browser/terminal.ext.host.proxy.js +104 -0
  137. package/lib/browser/terminal.ext.host.proxy.js.map +1 -0
  138. package/lib/browser/terminal.input.d.ts +6 -0
  139. package/lib/browser/terminal.input.d.ts.map +1 -0
  140. package/lib/browser/terminal.input.js +32 -0
  141. package/lib/browser/terminal.input.js.map +1 -0
  142. package/lib/browser/terminal.network.d.ts +32 -0
  143. package/lib/browser/terminal.network.d.ts.map +1 -0
  144. package/lib/browser/terminal.network.js +150 -0
  145. package/lib/browser/terminal.network.js.map +1 -0
  146. package/lib/browser/terminal.preference.d.ts +26 -0
  147. package/lib/browser/terminal.preference.d.ts.map +1 -0
  148. package/lib/browser/terminal.preference.js +80 -0
  149. package/lib/browser/terminal.preference.js.map +1 -0
  150. package/lib/browser/terminal.render.d.ts +13 -0
  151. package/lib/browser/terminal.render.d.ts.map +1 -0
  152. package/lib/browser/terminal.render.js +25 -0
  153. package/lib/browser/terminal.render.js.map +1 -0
  154. package/lib/browser/terminal.restore.d.ts +10 -0
  155. package/lib/browser/terminal.restore.d.ts.map +1 -0
  156. package/lib/browser/terminal.restore.js +41 -0
  157. package/lib/browser/terminal.restore.js.map +1 -0
  158. package/lib/browser/terminal.search.d.ts +15 -0
  159. package/lib/browser/terminal.search.d.ts.map +1 -0
  160. package/lib/browser/terminal.search.js +53 -0
  161. package/lib/browser/terminal.search.js.map +1 -0
  162. package/lib/browser/terminal.service.d.ts +60 -0
  163. package/lib/browser/terminal.service.d.ts.map +1 -0
  164. package/lib/browser/terminal.service.js +212 -0
  165. package/lib/browser/terminal.service.js.map +1 -0
  166. package/lib/browser/terminal.theme.d.ts +7 -0
  167. package/lib/browser/terminal.theme.d.ts.map +1 -0
  168. package/lib/browser/terminal.theme.js +50 -0
  169. package/lib/browser/terminal.theme.js.map +1 -0
  170. package/lib/browser/terminal.view.d.ts +99 -0
  171. package/lib/browser/terminal.view.d.ts.map +1 -0
  172. package/lib/browser/terminal.view.js +358 -0
  173. package/lib/browser/terminal.view.js.map +1 -0
  174. package/lib/common/api.d.ts +20 -0
  175. package/lib/common/api.d.ts.map +1 -0
  176. package/lib/common/api.js +5 -0
  177. package/lib/common/api.js.map +1 -0
  178. package/lib/common/client.d.ts +163 -0
  179. package/lib/common/client.d.ts.map +1 -0
  180. package/lib/common/client.js +5 -0
  181. package/lib/common/client.js.map +1 -0
  182. package/lib/common/commands.d.ts +92 -0
  183. package/lib/common/commands.d.ts.map +1 -0
  184. package/lib/common/commands.js +97 -0
  185. package/lib/common/commands.js.map +1 -0
  186. package/lib/common/controller.d.ts +86 -0
  187. package/lib/common/controller.d.ts.map +1 -0
  188. package/lib/common/controller.js +7 -0
  189. package/lib/common/controller.js.map +1 -0
  190. package/lib/common/environmentVariable.d.ts +118 -0
  191. package/lib/common/environmentVariable.d.ts.map +1 -0
  192. package/lib/common/environmentVariable.js +27 -0
  193. package/lib/common/environmentVariable.js.map +1 -0
  194. package/lib/common/environmentVariableCollection.d.ts +10 -0
  195. package/lib/common/environmentVariableCollection.d.ts.map +1 -0
  196. package/lib/common/environmentVariableCollection.js +136 -0
  197. package/lib/common/environmentVariableCollection.js.map +1 -0
  198. package/lib/common/error.d.ts +30 -0
  199. package/lib/common/error.d.ts.map +1 -0
  200. package/lib/common/error.js +5 -0
  201. package/lib/common/error.js.map +1 -0
  202. package/lib/common/extension.d.ts +108 -0
  203. package/lib/common/extension.d.ts.map +1 -0
  204. package/lib/common/extension.js +52 -0
  205. package/lib/common/extension.js.map +1 -0
  206. package/lib/common/index.d.ts +17 -0
  207. package/lib/common/index.d.ts.map +1 -0
  208. package/lib/common/index.js +21 -0
  209. package/lib/common/index.js.map +1 -0
  210. package/lib/common/link-computer.d.ts +56 -0
  211. package/lib/common/link-computer.d.ts.map +1 -0
  212. package/lib/common/link-computer.js +273 -0
  213. package/lib/common/link-computer.js.map +1 -0
  214. package/lib/common/menu.d.ts +5 -0
  215. package/lib/common/menu.d.ts.map +1 -0
  216. package/lib/common/menu.js +9 -0
  217. package/lib/common/menu.js.map +1 -0
  218. package/lib/common/network.d.ts +48 -0
  219. package/lib/common/network.d.ts.map +1 -0
  220. package/lib/common/network.js +10 -0
  221. package/lib/common/network.js.map +1 -0
  222. package/lib/common/preference.d.ts +33 -0
  223. package/lib/common/preference.d.ts.map +1 -0
  224. package/lib/common/preference.js +18 -0
  225. package/lib/common/preference.js.map +1 -0
  226. package/lib/common/pty.d.ts +205 -0
  227. package/lib/common/pty.d.ts.map +1 -0
  228. package/lib/common/pty.js +8 -0
  229. package/lib/common/pty.js.map +1 -0
  230. package/lib/common/render.d.ts +24 -0
  231. package/lib/common/render.d.ts.map +1 -0
  232. package/lib/common/render.js +10 -0
  233. package/lib/common/render.js.map +1 -0
  234. package/lib/common/resize.d.ts +39 -0
  235. package/lib/common/resize.d.ts.map +1 -0
  236. package/lib/common/resize.js +3 -0
  237. package/lib/common/resize.js.map +1 -0
  238. package/lib/common/restore.d.ts +6 -0
  239. package/lib/common/restore.d.ts.map +1 -0
  240. package/lib/common/restore.js +5 -0
  241. package/lib/common/restore.js.map +1 -0
  242. package/lib/common/service.d.ts +88 -0
  243. package/lib/common/service.d.ts.map +1 -0
  244. package/lib/common/service.js +6 -0
  245. package/lib/common/service.js.map +1 -0
  246. package/lib/common/shell.d.ts +10 -0
  247. package/lib/common/shell.d.ts.map +1 -0
  248. package/lib/common/shell.js +14 -0
  249. package/lib/common/shell.js.map +1 -0
  250. package/lib/common/theme.d.ts +6 -0
  251. package/lib/common/theme.d.ts.map +1 -0
  252. package/lib/common/theme.js +5 -0
  253. package/lib/common/theme.js.map +1 -0
  254. package/lib/common/utils.d.ts +4 -0
  255. package/lib/common/utils.d.ts.map +1 -0
  256. package/lib/common/utils.js +21 -0
  257. package/lib/common/utils.js.map +1 -0
  258. package/lib/index.d.ts +2 -0
  259. package/lib/index.d.ts.map +1 -0
  260. package/lib/index.js +5 -0
  261. package/lib/index.js.map +1 -0
  262. package/lib/node/index.d.ts +10 -0
  263. package/lib/node/index.d.ts.map +1 -0
  264. package/lib/node/index.js +35 -0
  265. package/lib/node/index.js.map +1 -0
  266. package/lib/node/pty.d.ts +11 -0
  267. package/lib/node/pty.d.ts.map +1 -0
  268. package/lib/node/pty.js +54 -0
  269. package/lib/node/pty.js.map +1 -0
  270. package/lib/node/shell.d.ts +3 -0
  271. package/lib/node/shell.d.ts.map +1 -0
  272. package/lib/node/shell.js +28 -0
  273. package/lib/node/shell.js.map +1 -0
  274. package/lib/node/terminal.service.client.d.ts +34 -0
  275. package/lib/node/terminal.service.client.d.ts.map +1 -0
  276. package/lib/node/terminal.service.client.js +111 -0
  277. package/lib/node/terminal.service.client.js.map +1 -0
  278. package/lib/node/terminal.service.d.ts +28 -0
  279. package/lib/node/terminal.service.d.ts.map +1 -0
  280. package/lib/node/terminal.service.js +136 -0
  281. package/lib/node/terminal.service.js.map +1 -0
  282. package/package.json +58 -0
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalProtocolLinkProvider = void 0;
4
+ const common_1 = require("../../common");
5
+ const helpers_1 = require("./helpers");
6
+ const link_1 = require("./link");
7
+ const base_1 = require("./base");
8
+ class TerminalProtocolLinkProvider extends base_1.TerminalBaseLinkProvider {
9
+ constructor(_xterm, _activateCallback) {
10
+ super();
11
+ this._xterm = _xterm;
12
+ this._activateCallback = _activateCallback;
13
+ }
14
+ _provideLinks(y) {
15
+ var _a, _b;
16
+ let startLine = y - 1;
17
+ let endLine = startLine;
18
+ const lines = [
19
+ this._xterm.buffer.active.getLine(startLine),
20
+ ];
21
+ while (startLine >= 0 && ((_a = this._xterm.buffer.active.getLine(startLine)) === null || _a === void 0 ? void 0 : _a.isWrapped)) {
22
+ lines.unshift(this._xterm.buffer.active.getLine(startLine - 1));
23
+ startLine--;
24
+ }
25
+ while (endLine < this._xterm.buffer.active.length && ((_b = this._xterm.buffer.active.getLine(endLine + 1)) === null || _b === void 0 ? void 0 : _b.isWrapped)) {
26
+ lines.push(this._xterm.buffer.active.getLine(endLine + 1));
27
+ endLine++;
28
+ }
29
+ this._linkComputerTarget = new TerminalLinkAdapter(this._xterm, startLine, endLine);
30
+ const links = common_1.LinkComputer.computeLinks(this._linkComputerTarget);
31
+ return links.map((link) => {
32
+ var _a;
33
+ const range = (0, helpers_1.convertLinkRangeToBuffer)(lines, this._xterm.cols, link.range, startLine);
34
+ // Check if the link if within the mouse position
35
+ return new link_1.TerminalLink(this._xterm, range, ((_a = link.url) === null || _a === void 0 ? void 0 : _a.toString()) || '', this._xterm.buffer.active.viewportY, this._activateCallback, true);
36
+ });
37
+ }
38
+ }
39
+ exports.TerminalProtocolLinkProvider = TerminalProtocolLinkProvider;
40
+ class TerminalLinkAdapter {
41
+ constructor(_xterm, _lineStart, _lineEnd) {
42
+ this._xterm = _xterm;
43
+ this._lineStart = _lineStart;
44
+ this._lineEnd = _lineEnd;
45
+ }
46
+ getLineCount() {
47
+ return 1;
48
+ }
49
+ getLineContent() {
50
+ return (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, this._lineStart, this._lineEnd, this._xterm.cols);
51
+ }
52
+ }
53
+ //# sourceMappingURL=protocol-link-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/protocol-link-provider.ts"],"names":[],"mappings":";;;AACA,yCAAiE;AACjE,uCAA0E;AAC1E,iCAAsC;AACtC,iCAAkD;AAElD,MAAa,4BAA6B,SAAQ,+BAAwB;IAGxE,YACmB,MAAgB,EAChB,iBAAuE;QAExF,KAAK,EAAE,CAAC;QAHS,WAAM,GAAN,MAAM,CAAU;QAChB,sBAAiB,GAAjB,iBAAiB,CAAsD;IAG1F,CAAC;IAES,aAAa,CAAC,CAAS;;QAC/B,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,OAAO,GAAG,SAAS,CAAC;QAExB,MAAM,KAAK,GAAkB;YAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAE;SAC9C,CAAC;QAEF,OAAO,SAAS,IAAI,CAAC,KAAI,MAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,0CAAE,SAAS,CAAA,EAAE;YAChF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAE,CAAC,CAAC;YACjE,SAAS,EAAE,CAAC;SACb;QAED,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAI,MAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAA,EAAE;YAC9G,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC;SACX;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,qBAAY,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;YACxB,MAAM,KAAK,GAAG,IAAA,kCAAwB,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEvF,iDAAiD;YACjD,OAAO,IAAI,mBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,KAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC7I,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtCD,oEAsCC;AAED,MAAM,mBAAmB;IACvB,YACU,MAAgB,EAChB,UAAkB,EAClB,QAAgB;QAFhB,WAAM,GAAN,MAAM,CAAU;QAChB,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IACtB,CAAC;IAEL,YAAY;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IAED,cAAc;QACZ,OAAO,IAAA,6BAAmB,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1G,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import type { Terminal } from 'xterm';
2
+ import { URI } from '@opensumi/ide-core-common';
3
+ import type { TerminalClient } from '../terminal.client';
4
+ import { TerminalLink } from './link';
5
+ import { XtermLinkMatcherHandler } from './link-manager';
6
+ import { TerminalBaseLinkProvider } from './base';
7
+ /** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */
8
+ export declare const unixLocalLinkClause: string;
9
+ export declare const winDrivePrefix = "(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:";
10
+ /** A regex that matches paths in the form \\?\c:\foo c:\foo, ~\foo, .\foo, ..\foo, foo\bar */
11
+ export declare const winLocalLinkClause: string;
12
+ /** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
13
+ replacing space with nonBreakningSpace or space ASCII code - 32. */
14
+ export declare const lineAndColumnClause: string;
15
+ export declare const winLineAndColumnMatchIndex = 12;
16
+ export declare const unixLineAndColumnMatchIndex = 11;
17
+ export declare const lineAndColumnClauseGroupCount = 6;
18
+ export declare class TerminalValidatedLocalLinkProvider extends TerminalBaseLinkProvider {
19
+ private readonly _xterm;
20
+ private readonly _client;
21
+ private readonly _activateFileCallback;
22
+ private readonly _wrapLinkHandler;
23
+ private readonly _validationCallback;
24
+ constructor(_xterm: Terminal, _client: TerminalClient, _activateFileCallback: (event: MouseEvent | undefined, link: string) => void, _wrapLinkHandler: (handler: (event: MouseEvent | undefined, link: string) => void) => XtermLinkMatcherHandler, _validationCallback: (link: string, callback: (result: {
25
+ uri: URI;
26
+ isDirectory: boolean;
27
+ } | undefined) => void) => void);
28
+ protected _provideLinks(y: number): Promise<TerminalLink[]>;
29
+ protected get _localLinkRegex(): RegExp;
30
+ }
31
+ //# sourceMappingURL=validated-local-link-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validated-local-link-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAQlD,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,QAAyI,CAAC;AAE1K,eAAO,MAAM,cAAc,kCAAkC,CAAC;AAI9D,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,QAAqJ,CAAC;AAErL;mEACmE;AACnE,eAAO,MAAM,mBAAmB,QAOW,CAAC;AAG5C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAG9C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C,qBAAa,kCAAmC,SAAQ,wBAAwB;IAE5E,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAJnB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,cAAc,EACvB,qBAAqB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,EAC5E,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,uBAAuB,EAC7G,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,KAAK,IAAI,KAAK,IAAI;cAK1H,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyFjE,SAAS,KAAK,eAAe,IAAI,MAAM,CAItC;CACF"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ // Some code copued and modified from https://github.com/microsoft/vscode/blob/1.44.0/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TerminalValidatedLocalLinkProvider = exports.lineAndColumnClauseGroupCount = exports.unixLineAndColumnMatchIndex = exports.winLineAndColumnMatchIndex = exports.lineAndColumnClause = exports.winLocalLinkClause = exports.winDrivePrefix = exports.unixLocalLinkClause = void 0;
9
+ const platform_1 = require("@opensumi/ide-core-common/lib/platform");
10
+ const link_1 = require("./link");
11
+ const base_1 = require("./base");
12
+ const helpers_1 = require("./helpers");
13
+ const pathPrefix = '(\\.\\.?|\\~)';
14
+ const pathSeparatorClause = '\\/';
15
+ // '":; are allowed in paths but they are often separators so ignore them
16
+ // Also disallow \\ to prevent a catastropic backtracking case #24798
17
+ const excludedPathCharactersClause = '[^\\0\\s!$`&*()\\[\\]\'":;\\\\]';
18
+ /** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */
19
+ exports.unixLocalLinkClause = '((' + pathPrefix + '|(' + excludedPathCharactersClause + ')+)?(' + pathSeparatorClause + '(' + excludedPathCharactersClause + ')+)+)';
20
+ exports.winDrivePrefix = '(?:\\\\\\\\\\?\\\\)?[a-zA-Z]:';
21
+ const winPathPrefix = '(' + exports.winDrivePrefix + '|\\.\\.?|\\~)';
22
+ const winPathSeparatorClause = '(\\\\|\\/)';
23
+ const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!$`&*()\\[\\]\'":;]';
24
+ /** A regex that matches paths in the form \\?\c:\foo c:\foo, ~\foo, .\foo, ..\foo, foo\bar */
25
+ exports.winLocalLinkClause = '((' + winPathPrefix + '|(' + winExcludedPathCharactersClause + ')+)?(' + winPathSeparatorClause + '(' + winExcludedPathCharactersClause + ')+)+)';
26
+ /** As xterm reads from DOM, space in that case is nonbreaking char ASCII code - 160,
27
+ replacing space with nonBreakningSpace or space ASCII code - 32. */
28
+ exports.lineAndColumnClause = [
29
+ '((\\S*)", line ((\\d+)( column (\\d+))?))',
30
+ '((\\S*)",((\\d+)(:(\\d+))?))',
31
+ '((\\S*) on line ((\\d+)(, column (\\d+))?))',
32
+ '((\\S*):line ((\\d+)(, column (\\d+))?))',
33
+ '(([^\\s\\(\\)]*)(\\s?[\\(\\[](\\d+)(,\\s?(\\d+))?)[\\)\\]])',
34
+ '(([^:\\s\\(\\)<>\'\"\\[\\]]*)(:(\\d+))?(:(\\d+))?)', // (file path):336, (file path):336:9
35
+ ].join('|').replace(/ /g, `[${'\u00A0'} ]`);
36
+ // Changing any regex may effect this value, hence changes this as well if required.
37
+ exports.winLineAndColumnMatchIndex = 12;
38
+ exports.unixLineAndColumnMatchIndex = 11;
39
+ // Each line and column clause have 6 groups (ie no. of expressions in round brackets)
40
+ exports.lineAndColumnClauseGroupCount = 6;
41
+ const MAX_LENGTH = 2000;
42
+ class TerminalValidatedLocalLinkProvider extends base_1.TerminalBaseLinkProvider {
43
+ constructor(_xterm, _client, _activateFileCallback, _wrapLinkHandler, _validationCallback) {
44
+ super();
45
+ this._xterm = _xterm;
46
+ this._client = _client;
47
+ this._activateFileCallback = _activateFileCallback;
48
+ this._wrapLinkHandler = _wrapLinkHandler;
49
+ this._validationCallback = _validationCallback;
50
+ }
51
+ async _provideLinks(y) {
52
+ var _a, _b;
53
+ const result = [];
54
+ let startLine = y - 1;
55
+ let endLine = startLine;
56
+ const lines = [
57
+ this._xterm.buffer.active.getLine(startLine),
58
+ ];
59
+ while (startLine >= 0 && ((_a = this._xterm.buffer.active.getLine(startLine)) === null || _a === void 0 ? void 0 : _a.isWrapped)) {
60
+ lines.unshift(this._xterm.buffer.active.getLine(startLine - 1));
61
+ startLine--;
62
+ }
63
+ while (endLine < this._xterm.buffer.active.length && ((_b = this._xterm.buffer.active.getLine(endLine + 1)) === null || _b === void 0 ? void 0 : _b.isWrapped)) {
64
+ lines.push(this._xterm.buffer.active.getLine(endLine + 1));
65
+ endLine++;
66
+ }
67
+ const text = (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, startLine, endLine, this._xterm.cols);
68
+ if (text.length > MAX_LENGTH) {
69
+ return [];
70
+ }
71
+ // clone regex to do a global search on text
72
+ const rex = new RegExp(this._localLinkRegex, 'g');
73
+ let match;
74
+ let stringIndex = -1;
75
+ while ((match = rex.exec(text)) !== null) {
76
+ // const link = match[typeof matcher.matchIndex !== 'number' ? 0 : matcher.matchIndex];
77
+ let link = match[0];
78
+ if (!link) {
79
+ // something matched but does not comply with the given matchIndex
80
+ // since this is most likely a bug the regex itself we simply do nothing here
81
+ // this._logService.debug('match found without corresponding matchIndex', match, matcher);
82
+ break;
83
+ }
84
+ // Get index, match.index is for the outer match which includes negated chars
85
+ // therefore we cannot use match.index directly, instead we search the position
86
+ // of the match group in text again
87
+ // also correct regex and string search offsets for the next loop run
88
+ stringIndex = text.indexOf(link, stringIndex + 1);
89
+ rex.lastIndex = stringIndex + link.length;
90
+ if (stringIndex < 0) {
91
+ // invalid stringIndex (should not have happened)
92
+ break;
93
+ }
94
+ // Adjust the link range to exclude a/ and b/ if it looks like a git diff
95
+ if (
96
+ // --- a/foo/bar
97
+ // +++ b/foo/bar
98
+ ((text.startsWith('--- a/') || text.startsWith('+++ b/')) && stringIndex === 4) ||
99
+ // diff --git a/foo/bar b/foo/bar
100
+ (text.startsWith('diff --git') && (link.startsWith('a/') || link.startsWith('b/')))) {
101
+ link = link.substring(2);
102
+ stringIndex += 2;
103
+ }
104
+ // Convert the link text's string index into a wrapped buffer range
105
+ const bufferRange = (0, helpers_1.convertLinkRangeToBuffer)(lines, this._xterm.cols, {
106
+ startColumn: stringIndex + 1,
107
+ startLineNumber: 1,
108
+ endColumn: stringIndex + link.length + 1,
109
+ endLineNumber: 1,
110
+ }, startLine);
111
+ const validatedLink = await new Promise((r) => {
112
+ this._validationCallback(link, (result) => {
113
+ if (result && !result.isDirectory) {
114
+ const activateCallback = this._wrapLinkHandler((event, text) => {
115
+ this._activateFileCallback(event, text);
116
+ });
117
+ r(new link_1.TerminalLink(this._xterm, bufferRange, link, this._xterm.buffer.active.viewportY, activateCallback, true));
118
+ }
119
+ else {
120
+ r(undefined);
121
+ }
122
+ });
123
+ });
124
+ if (validatedLink) {
125
+ result.push(validatedLink);
126
+ }
127
+ }
128
+ return result;
129
+ }
130
+ get _localLinkRegex() {
131
+ const baseLocalLinkClause = this._client.os === platform_1.OperatingSystem.Windows ? exports.winLocalLinkClause : exports.unixLocalLinkClause;
132
+ // Append line and column number regex
133
+ return new RegExp(`${baseLocalLinkClause}(${exports.lineAndColumnClause})`);
134
+ }
135
+ }
136
+ exports.TerminalValidatedLocalLinkProvider = TerminalValidatedLocalLinkProvider;
137
+ //# sourceMappingURL=validated-local-link-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validated-local-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/validated-local-link-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { Terminal, ILinkMatcherOptions, ITerminalAddon } from 'xterm';
2
+ import { IFileServiceClient } from '@opensumi/ide-file-service/lib/common';
3
+ import { Disposable, Event } from '@opensumi/ide-core-common';
4
+ import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common';
5
+ import { TerminalKeyBoardInputService } from './terminal.input';
6
+ import { ITerminalConnection } from '../common';
7
+ export declare const rePath: RegExp;
8
+ export declare class FilePathAddon extends Disposable implements ITerminalAddon {
9
+ private _workspace;
10
+ private _fileService;
11
+ private _editorService;
12
+ private _keyboardService;
13
+ private _options;
14
+ private _linkMatcherId;
15
+ private _terminal;
16
+ constructor(_workspace: string, _fileService: IFileServiceClient, _editorService: WorkbenchEditorService, _keyboardService: TerminalKeyBoardInputService, _options?: ILinkMatcherOptions);
17
+ private _mayAbsolutePath;
18
+ private filterAvailablePaths;
19
+ private _parseUri;
20
+ private _openFile;
21
+ activate(terminal: Terminal): void;
22
+ }
23
+ export declare class AttachAddon extends Disposable implements ITerminalAddon {
24
+ private _connection;
25
+ private _disposeConnection;
26
+ private _terminal;
27
+ private _onData;
28
+ onData: Event<string | ArrayBuffer>;
29
+ private _onExit;
30
+ onExit: Event<number | undefined>;
31
+ private _onTime;
32
+ onTime: Event<number>;
33
+ private _lastInputTime;
34
+ setConnection(connection: ITerminalConnection | undefined): void;
35
+ activate(terminal: Terminal): Promise<void>;
36
+ private _sendData;
37
+ private _sendBinary;
38
+ private _timeResponse;
39
+ }
40
+ export declare const DEFAULT_ROW = 80;
41
+ export declare const DEFAULT_COL = 24;
42
+ //# sourceMappingURL=terminal.addon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.addon.d.ts","sourceRoot":"","sources":["../../src/browser/terminal.addon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAY,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAO,UAAU,EAAW,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAiBhD,eAAO,MAAM,MAAM,QAA6D,CAAC;AAEjF,qBAAa,aAAc,SAAQ,UAAW,YAAW,cAAc;IAKnE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,QAAQ;IARlB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,SAAS,CAAuB;gBAG9B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,sBAAsB,EACtC,gBAAgB,EAAE,4BAA4B,EAC9C,QAAQ,GAAE,mBAAwB;IAM5C,OAAO,CAAC,gBAAgB;YAYV,oBAAoB;YAcpB,SAAS;YAkBT,SAAS;IAqBvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAYnC;AAED,qBAAa,WAAY,SAAQ,UAAW,YAAW,cAAc;IACnE,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,SAAS,CAAW;IAE5B,OAAO,CAAC,OAAO,CAAuC;IACtD,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,CAAsB;IACzD,OAAO,CAAC,OAAO,CAAqC;IACpD,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAsB;IACvD,OAAO,CAAC,OAAO,CAAyB;IACxC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAsB;IAE3C,OAAO,CAAC,cAAc,CAAK;IAEpB,aAAa,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS;IA0BnD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;CAGtB;AAED,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_COL = exports.DEFAULT_ROW = exports.AttachAddon = exports.FilePathAddon = exports.rePath = void 0;
4
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
5
+ const segmentClause = '\\~\\w\\.@_\\-';
6
+ const posClause = [
7
+ ':\\d+(?::\\d+)?',
8
+ '\\s*\\(\\d+(?:,\\s*\\d+)?\\)', // (1) | (1,2) | (1, 2)
9
+ ].join('|');
10
+ const pathClause = [
11
+ // Unix
12
+ `[${segmentClause}]*(?:/[${segmentClause}]+)+`,
13
+ // Windows 应该只在 electron 场景用到
14
+ // Windows https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats
15
+ // C:\xxx\xxx
16
+ // \\.\c:\xxx\xxx
17
+ // \\?\c:\xxx\xxx
18
+ `(?:(?:\\\\\\\\[.?]\\\\)?[a-zA-Z]:\\\\)?[${segmentClause}]+(?:\\\\[${segmentClause}]+)+`,
19
+ ].join('|');
20
+ exports.rePath = new RegExp(`(?:^|\s)((?:${pathClause})(?:${posClause})?)`);
21
+ class FilePathAddon extends ide_core_common_1.Disposable {
22
+ constructor(_workspace, _fileService, _editorService, _keyboardService, _options = {}) {
23
+ super();
24
+ this._workspace = _workspace;
25
+ this._fileService = _fileService;
26
+ this._editorService = _editorService;
27
+ this._keyboardService = _keyboardService;
28
+ this._options = _options;
29
+ this._options.matchIndex = 1;
30
+ }
31
+ _mayAbsolutePath(uri) {
32
+ // 同时校验相对路径和绝对路径
33
+ // 单纯从链接层面无法区分
34
+ // 只能够全部交给 file api 去判断
35
+ // 两个同时匹配的时候,优先取相对路径
36
+ return [
37
+ // 这里无须使用 join,前置的 match 来保证
38
+ this._workspace + (uri[0] === '/' ? '' : '/') + uri,
39
+ uri,
40
+ ];
41
+ }
42
+ async filterAvailablePaths(paths) {
43
+ try {
44
+ const promises = [];
45
+ paths.map((absolute) => promises
46
+ .push(this._fileService.getFileStat(ide_core_common_1.URI.file(absolute).toString())));
47
+ const stats = await Promise.all(promises);
48
+ return stats
49
+ .filter((s) => !!s && !s.isDirectory && (new ide_core_common_1.URI(s.uri).scheme === 'file'))
50
+ .map((s) => (new ide_core_common_1.URI(s.uri)).codeUri.fsPath);
51
+ }
52
+ catch (_a) {
53
+ return [];
54
+ }
55
+ }
56
+ async _parseUri(uri) {
57
+ const [, path, pos] = uri.match(exports.rePath);
58
+ const posArr = [];
59
+ const reNum = /\d+/g;
60
+ if (pos) {
61
+ let res;
62
+ while ((res = reNum.exec(pos))) {
63
+ posArr.push(+res[0]);
64
+ }
65
+ }
66
+ const [row, col] = posArr;
67
+ return {
68
+ paths: await this.filterAvailablePaths(this._mayAbsolutePath(path)),
69
+ row,
70
+ col,
71
+ };
72
+ }
73
+ async _openFile(_, uri) {
74
+ if (!this._keyboardService.isCommandOrCtrl) {
75
+ return;
76
+ }
77
+ const uriInfo = await this._parseUri(uri);
78
+ for (const path of uriInfo.paths) {
79
+ const fileUri = ide_core_common_1.URI.file(path);
80
+ this._editorService.open(fileUri, uriInfo.row && uriInfo.col ? {
81
+ range: {
82
+ startLineNumber: uriInfo.row,
83
+ endLineNumber: uriInfo.row,
84
+ startColumn: uriInfo.col,
85
+ endColumn: uriInfo.col,
86
+ },
87
+ } : {});
88
+ break;
89
+ }
90
+ }
91
+ activate(terminal) {
92
+ this._terminal = terminal;
93
+ this._linkMatcherId = this._terminal.registerLinkMatcher(exports.rePath, this._openFile.bind(this), this._options);
94
+ this.addDispose({
95
+ dispose: () => {
96
+ if (this._linkMatcherId !== undefined && this._terminal !== undefined) {
97
+ this._terminal.deregisterLinkMatcher(this._linkMatcherId);
98
+ }
99
+ },
100
+ });
101
+ }
102
+ }
103
+ exports.FilePathAddon = FilePathAddon;
104
+ class AttachAddon extends ide_core_common_1.Disposable {
105
+ constructor() {
106
+ super(...arguments);
107
+ this._onData = new ide_core_common_1.Emitter();
108
+ this.onData = this._onData.event;
109
+ this._onExit = new ide_core_common_1.Emitter();
110
+ this.onExit = this._onExit.event;
111
+ this._onTime = new ide_core_common_1.Emitter();
112
+ this.onTime = this._onTime.event;
113
+ this._lastInputTime = 0;
114
+ }
115
+ setConnection(connection) {
116
+ if (this._disposeConnection) {
117
+ this._disposeConnection.dispose();
118
+ this._disposeConnection = null;
119
+ }
120
+ this._connection = connection;
121
+ if (connection) {
122
+ this._disposeConnection = new ide_core_common_1.Disposable(connection.onData((data) => {
123
+ this._terminal.write(typeof data === 'string' ? data : new Uint8Array(data));
124
+ this._onData.fire(data);
125
+ if (this._lastInputTime) {
126
+ const delta = Date.now() - this._lastInputTime;
127
+ this._lastInputTime = 0;
128
+ this._onTime.fire(delta);
129
+ }
130
+ }));
131
+ if (connection.onExit) {
132
+ this._disposeConnection.addDispose(connection.onExit((code) => {
133
+ this._onExit.fire(code);
134
+ }));
135
+ }
136
+ }
137
+ }
138
+ async activate(terminal) {
139
+ this._terminal = terminal;
140
+ this.addDispose(ide_core_common_1.Disposable.create(() => { var _a; return (_a = this._disposeConnection) === null || _a === void 0 ? void 0 : _a.dispose(); }));
141
+ this.addDispose(terminal.onData((data) => this._sendData(data)));
142
+ this.addDispose(terminal.onBinary((data) => this._sendBinary(data)));
143
+ }
144
+ _sendData(data) {
145
+ if (!this._connection || this._connection.readonly) {
146
+ return;
147
+ }
148
+ this._timeResponse();
149
+ this._connection.sendData(data);
150
+ }
151
+ _sendBinary(data) {
152
+ if (!this._connection || this._connection.readonly) {
153
+ return;
154
+ }
155
+ const buffer = new Uint8Array(data.length);
156
+ for (let i = 0; i < data.length; ++i) {
157
+ buffer[i] = data.charCodeAt(i) & 255;
158
+ }
159
+ this._timeResponse();
160
+ this._connection.sendData(buffer);
161
+ }
162
+ _timeResponse() {
163
+ this._lastInputTime = Date.now();
164
+ }
165
+ }
166
+ exports.AttachAddon = AttachAddon;
167
+ exports.DEFAULT_ROW = 80;
168
+ exports.DEFAULT_COL = 24;
169
+ //# sourceMappingURL=terminal.addon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.addon.js","sourceRoot":"","sources":["../../src/browser/terminal.addon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type vscode from 'vscode';
2
+ import { Event } from '@opensumi/ide-core-common';
3
+ import { ITerminalApiService, ITerminalGroupViewService, ITerminalController, ITerminalInfo, ITerminalExternalClient, ITerminalInternalService, ITerminalNetwork, ITerminalExitEvent } from '../common';
4
+ export declare class TerminalApiService implements ITerminalApiService {
5
+ private _onDidOpenTerminal;
6
+ private _onDidCloseTerminal;
7
+ private _onDidChangeActiveTerminal;
8
+ readonly onDidOpenTerminal: Event<ITerminalInfo>;
9
+ readonly onDidCloseTerminal: Event<ITerminalExitEvent>;
10
+ readonly onDidChangeActiveTerminal: Event<string>;
11
+ protected readonly controller: ITerminalController;
12
+ protected readonly view: ITerminalGroupViewService;
13
+ protected readonly service: ITerminalInternalService;
14
+ protected readonly network: ITerminalNetwork;
15
+ protected _entries: Map<string, ITerminalExternalClient>;
16
+ constructor();
17
+ get terminals(): {
18
+ id: string;
19
+ name: string;
20
+ isActive: boolean;
21
+ }[];
22
+ createTerminal(options: vscode.TerminalOptions): Promise<ITerminalExternalClient>;
23
+ getProcessId(sessionId: string): Promise<number | undefined>;
24
+ sendText(id: string, text: string, addNewLine?: boolean): void;
25
+ showTerm(clientId: string, preserveFocus?: boolean): void;
26
+ hideTerm(clientId: string): void;
27
+ removeTerm(clientId: string): void;
28
+ createWidget(uniqName: string, widgetRenderFunc: (element: HTMLDivElement) => void): import("../common").IWidget;
29
+ /**
30
+ * 启动终端重连任务,可多次调用不会频繁触发,具体触发时机由底层控制
31
+ */
32
+ scheduleReconnection(): void;
33
+ }
34
+ //# sourceMappingURL=terminal.api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.api.d.ts","sourceRoot":"","sources":["../../src/browser/terminal.api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAW,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,aAAa,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExM,qBACa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,mBAAmB,CAAqC;IAChE,OAAO,CAAC,0BAA0B,CAAyB;IAE3D,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAiC;IACjF,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAkC;IACxF,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAyC;IAG1F,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAGrD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAE7C,SAAS,CAAC,QAAQ,uCAA8C;;IAgBhE,IAAI,SAAS;;;;QAQZ;IAEK,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmCvF,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAO;IAIpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,OAAc;IAUxD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAUzB,UAAU,CAAC,QAAQ,EAAE,MAAM;IAU3B,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAelF;;OAEG;IACH,oBAAoB;CAGrB"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalApiService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
7
+ const lodash_1 = require("lodash");
8
+ const common_1 = require("../common");
9
+ let TerminalApiService = class TerminalApiService {
10
+ constructor() {
11
+ this._onDidOpenTerminal = new ide_core_common_1.Emitter();
12
+ this._onDidCloseTerminal = new ide_core_common_1.Emitter();
13
+ this._onDidChangeActiveTerminal = new ide_core_common_1.Emitter();
14
+ this.onDidOpenTerminal = this._onDidOpenTerminal.event;
15
+ this.onDidCloseTerminal = this._onDidCloseTerminal.event;
16
+ this.onDidChangeActiveTerminal = this._onDidChangeActiveTerminal.event;
17
+ this._entries = new Map();
18
+ this.controller.onDidOpenTerminal((info) => {
19
+ this._onDidOpenTerminal.fire(info);
20
+ });
21
+ this.controller.onDidCloseTerminal((e) => {
22
+ this._onDidCloseTerminal.fire(e);
23
+ });
24
+ this.controller.onDidChangeActiveTerminal((id) => {
25
+ this._onDidChangeActiveTerminal.fire(id);
26
+ });
27
+ }
28
+ get terminals() {
29
+ return Array.from(this.controller.clients.values()).map((v) => {
30
+ return {
31
+ id: v.id,
32
+ name: v.name,
33
+ isActive: this.view.currentWidgetId === v.id,
34
+ };
35
+ });
36
+ }
37
+ async createTerminal(options) {
38
+ const self = this;
39
+ const client = this.controller.createClientWithWidget(options);
40
+ const external = {
41
+ get id() { return client.id; },
42
+ get name() { return client.name; },
43
+ get processId() { return client.pid; },
44
+ show(preserveFocus = true) {
45
+ const widget = client.widget;
46
+ self.view.selectWidget(widget.id);
47
+ self.controller.showTerminalPanel();
48
+ if (!preserveFocus) {
49
+ setTimeout(() => client.focus());
50
+ }
51
+ },
52
+ hide() {
53
+ self.controller.hideTerminalPanel();
54
+ },
55
+ dispose() {
56
+ self.view.removeWidget(client.widget.id);
57
+ self._entries.delete(client.id);
58
+ },
59
+ };
60
+ this._entries.set(client.id, external);
61
+ await client.attached.promise;
62
+ external.show();
63
+ return external;
64
+ }
65
+ getProcessId(sessionId) {
66
+ return this.service.getProcessId(sessionId);
67
+ }
68
+ sendText(id, text, addNewLine = true) {
69
+ this.service.sendText(id, `${text}${addNewLine ? '\r' : ''}`);
70
+ }
71
+ showTerm(clientId, preserveFocus = true) {
72
+ const client = this._entries.get(clientId);
73
+ if (!client) {
74
+ return;
75
+ }
76
+ client.show(preserveFocus);
77
+ }
78
+ hideTerm(clientId) {
79
+ const client = this._entries.get(clientId);
80
+ if (!client) {
81
+ return;
82
+ }
83
+ client.hide();
84
+ }
85
+ removeTerm(clientId) {
86
+ const client = this._entries.get(clientId);
87
+ if (!client) {
88
+ return;
89
+ }
90
+ client.dispose();
91
+ }
92
+ createWidget(uniqName, widgetRenderFunc) {
93
+ const widgetId = uniqName;
94
+ const groupIndex = this.view.createGroup();
95
+ const group = this.view.getGroup(groupIndex);
96
+ const widget = this.view.createWidget(group, widgetId, false, true);
97
+ widget.name = (0, lodash_1.capitalize)(uniqName);
98
+ this.view.selectWidget(widgetId);
99
+ widget.onRender(() => {
100
+ widgetRenderFunc(widget.element);
101
+ });
102
+ return widget;
103
+ }
104
+ /**
105
+ * 启动终端重连任务,可多次调用不会频繁触发,具体触发时机由底层控制
106
+ */
107
+ scheduleReconnection() {
108
+ return this.network.scheduleReconnection();
109
+ }
110
+ };
111
+ (0, tslib_1.__decorate)([
112
+ (0, di_1.Autowired)(common_1.ITerminalController),
113
+ (0, tslib_1.__metadata)("design:type", Object)
114
+ ], TerminalApiService.prototype, "controller", void 0);
115
+ (0, tslib_1.__decorate)([
116
+ (0, di_1.Autowired)(common_1.ITerminalGroupViewService),
117
+ (0, tslib_1.__metadata)("design:type", Object)
118
+ ], TerminalApiService.prototype, "view", void 0);
119
+ (0, tslib_1.__decorate)([
120
+ (0, di_1.Autowired)(common_1.ITerminalInternalService),
121
+ (0, tslib_1.__metadata)("design:type", Object)
122
+ ], TerminalApiService.prototype, "service", void 0);
123
+ (0, tslib_1.__decorate)([
124
+ (0, di_1.Autowired)(common_1.ITerminalNetwork),
125
+ (0, tslib_1.__metadata)("design:type", Object)
126
+ ], TerminalApiService.prototype, "network", void 0);
127
+ TerminalApiService = (0, tslib_1.__decorate)([
128
+ (0, di_1.Injectable)(),
129
+ (0, tslib_1.__metadata)("design:paramtypes", [])
130
+ ], TerminalApiService);
131
+ exports.TerminalApiService = TerminalApiService;
132
+ //# sourceMappingURL=terminal.api.js.map