@theia/filesystem 1.77.0-next.1 → 1.77.0-next.108

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 (436) hide show
  1. package/lib/browser/breadcrumbs/filepath-breadcrumb.js +4 -8
  2. package/lib/browser/breadcrumbs/filepath-breadcrumb.js.map +1 -1
  3. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts +1 -1
  4. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts.map +1 -1
  5. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js +18 -25
  6. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js.map +1 -1
  7. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts +5 -5
  8. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts.map +1 -1
  9. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js +27 -33
  10. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js.map +1 -1
  11. package/lib/browser/download/file-download-command-contribution.d.ts +1 -1
  12. package/lib/browser/download/file-download-command-contribution.d.ts.map +1 -1
  13. package/lib/browser/download/file-download-command-contribution.js +28 -33
  14. package/lib/browser/download/file-download-command-contribution.js.map +1 -1
  15. package/lib/browser/download/file-download-frontend-module.js +8 -10
  16. package/lib/browser/download/file-download-frontend-module.js.map +1 -1
  17. package/lib/browser/download/file-download-service.d.ts +1 -1
  18. package/lib/browser/download/file-download-service.d.ts.map +1 -1
  19. package/lib/browser/download/file-download-service.js +19 -25
  20. package/lib/browser/download/file-download-service.js.map +1 -1
  21. package/lib/browser/file-dialog/file-dialog-container.d.ts +1 -1
  22. package/lib/browser/file-dialog/file-dialog-container.d.ts.map +1 -1
  23. package/lib/browser/file-dialog/file-dialog-container.js +25 -30
  24. package/lib/browser/file-dialog/file-dialog-container.js.map +1 -1
  25. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts +1 -1
  26. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts.map +1 -1
  27. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js +13 -21
  28. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js.map +1 -1
  29. package/lib/browser/file-dialog/file-dialog-model.d.ts +2 -2
  30. package/lib/browser/file-dialog/file-dialog-model.d.ts.map +1 -1
  31. package/lib/browser/file-dialog/file-dialog-model.js +20 -27
  32. package/lib/browser/file-dialog/file-dialog-model.js.map +1 -1
  33. package/lib/browser/file-dialog/file-dialog-module.js +21 -23
  34. package/lib/browser/file-dialog/file-dialog-module.js.map +1 -1
  35. package/lib/browser/file-dialog/file-dialog-service.d.ts +4 -4
  36. package/lib/browser/file-dialog/file-dialog-service.d.ts.map +1 -1
  37. package/lib/browser/file-dialog/file-dialog-service.js +29 -38
  38. package/lib/browser/file-dialog/file-dialog-service.js.map +1 -1
  39. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts +3 -1
  40. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts.map +1 -1
  41. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js +17 -22
  42. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js.map +1 -1
  43. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts +2 -0
  44. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts.map +1 -0
  45. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js +35 -0
  46. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js.map +1 -0
  47. package/lib/browser/file-dialog/file-dialog-tree.d.ts +2 -2
  48. package/lib/browser/file-dialog/file-dialog-tree.d.ts.map +1 -1
  49. package/lib/browser/file-dialog/file-dialog-tree.js +8 -11
  50. package/lib/browser/file-dialog/file-dialog-tree.js.map +1 -1
  51. package/lib/browser/file-dialog/file-dialog-widget.d.ts +2 -2
  52. package/lib/browser/file-dialog/file-dialog-widget.d.ts.map +1 -1
  53. package/lib/browser/file-dialog/file-dialog-widget.js +18 -23
  54. package/lib/browser/file-dialog/file-dialog-widget.js.map +1 -1
  55. package/lib/browser/file-dialog/file-dialog.d.ts +11 -6
  56. package/lib/browser/file-dialog/file-dialog.d.ts.map +1 -1
  57. package/lib/browser/file-dialog/file-dialog.js +109 -126
  58. package/lib/browser/file-dialog/file-dialog.js.map +1 -1
  59. package/lib/browser/file-dialog/index.d.ts +4 -4
  60. package/lib/browser/file-dialog/index.d.ts.map +1 -1
  61. package/lib/browser/file-dialog/index.js +4 -7
  62. package/lib/browser/file-dialog/index.js.map +1 -1
  63. package/lib/browser/file-resource.d.ts +2 -2
  64. package/lib/browser/file-resource.d.ts.map +1 -1
  65. package/lib/browser/file-resource.js +64 -71
  66. package/lib/browser/file-resource.js.map +1 -1
  67. package/lib/browser/file-resource.spec.js +39 -41
  68. package/lib/browser/file-resource.spec.js.map +1 -1
  69. package/lib/browser/file-selection.d.ts +1 -1
  70. package/lib/browser/file-selection.d.ts.map +1 -1
  71. package/lib/browser/file-selection.js +7 -10
  72. package/lib/browser/file-selection.js.map +1 -1
  73. package/lib/browser/file-service-activation.spec.d.ts +2 -0
  74. package/lib/browser/file-service-activation.spec.d.ts.map +1 -0
  75. package/lib/browser/file-service-activation.spec.js +79 -0
  76. package/lib/browser/file-service-activation.spec.js.map +1 -0
  77. package/lib/browser/file-service-copy.spec.d.ts +2 -0
  78. package/lib/browser/file-service-copy.spec.d.ts.map +1 -0
  79. package/lib/browser/file-service-copy.spec.js +193 -0
  80. package/lib/browser/file-service-copy.spec.js.map +1 -0
  81. package/lib/browser/file-service-watcher.spec.js +199 -201
  82. package/lib/browser/file-service-watcher.spec.js.map +1 -1
  83. package/lib/browser/file-service.d.ts +4 -4
  84. package/lib/browser/file-service.d.ts.map +1 -1
  85. package/lib/browser/file-service.js +179 -182
  86. package/lib/browser/file-service.js.map +1 -1
  87. package/lib/browser/file-tree/file-tree-container.js +12 -15
  88. package/lib/browser/file-tree/file-tree-container.js.map +1 -1
  89. package/lib/browser/file-tree/file-tree-decorator-adapter.js +23 -31
  90. package/lib/browser/file-tree/file-tree-decorator-adapter.js.map +1 -1
  91. package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js +26 -28
  92. package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js.map +1 -1
  93. package/lib/browser/file-tree/file-tree-label-provider.d.ts +1 -1
  94. package/lib/browser/file-tree/file-tree-label-provider.d.ts.map +1 -1
  95. package/lib/browser/file-tree/file-tree-label-provider.js +13 -18
  96. package/lib/browser/file-tree/file-tree-label-provider.js.map +1 -1
  97. package/lib/browser/file-tree/file-tree-model.d.ts +5 -5
  98. package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
  99. package/lib/browser/file-tree/file-tree-model.js +48 -52
  100. package/lib/browser/file-tree/file-tree-model.js.map +1 -1
  101. package/lib/browser/file-tree/file-tree-widget.d.ts +3 -3
  102. package/lib/browser/file-tree/file-tree-widget.d.ts.map +1 -1
  103. package/lib/browser/file-tree/file-tree-widget.js +66 -72
  104. package/lib/browser/file-tree/file-tree-widget.js.map +1 -1
  105. package/lib/browser/file-tree/file-tree.d.ts +3 -3
  106. package/lib/browser/file-tree/file-tree.d.ts.map +1 -1
  107. package/lib/browser/file-tree/file-tree.js +26 -31
  108. package/lib/browser/file-tree/file-tree.js.map +1 -1
  109. package/lib/browser/file-tree/index.d.ts +6 -6
  110. package/lib/browser/file-tree/index.d.ts.map +1 -1
  111. package/lib/browser/file-tree/index.js +6 -9
  112. package/lib/browser/file-tree/index.js.map +1 -1
  113. package/lib/browser/filesystem-frontend-contribution.d.ts +6 -6
  114. package/lib/browser/filesystem-frontend-contribution.d.ts.map +1 -1
  115. package/lib/browser/filesystem-frontend-contribution.js +75 -90
  116. package/lib/browser/filesystem-frontend-contribution.js.map +1 -1
  117. package/lib/browser/filesystem-frontend-module.js +47 -50
  118. package/lib/browser/filesystem-frontend-module.js.map +1 -1
  119. package/lib/browser/filesystem-saveable-service.d.ts +2 -2
  120. package/lib/browser/filesystem-saveable-service.d.ts.map +1 -1
  121. package/lib/browser/filesystem-saveable-service.js +35 -44
  122. package/lib/browser/filesystem-saveable-service.js.map +1 -1
  123. package/lib/browser/filesystem-watcher-error-handler.js +13 -18
  124. package/lib/browser/filesystem-watcher-error-handler.js.map +1 -1
  125. package/lib/browser/index.d.ts +4 -4
  126. package/lib/browser/index.d.ts.map +1 -1
  127. package/lib/browser/index.js +4 -7
  128. package/lib/browser/index.js.map +1 -1
  129. package/lib/browser/location/index.d.ts +2 -2
  130. package/lib/browser/location/index.d.ts.map +1 -1
  131. package/lib/browser/location/index.js +2 -5
  132. package/lib/browser/location/index.js.map +1 -1
  133. package/lib/browser/location/location-renderer.d.ts +3 -3
  134. package/lib/browser/location/location-renderer.d.ts.map +1 -1
  135. package/lib/browser/location/location-renderer.js +42 -51
  136. package/lib/browser/location/location-renderer.js.map +1 -1
  137. package/lib/browser/location/location-renderer.spec.js +61 -63
  138. package/lib/browser/location/location-renderer.spec.js.map +1 -1
  139. package/lib/browser/location/location-service.js +1 -2
  140. package/lib/browser/location/location-service.js.map +1 -1
  141. package/lib/browser/remote-file-service-contribution.d.ts +2 -2
  142. package/lib/browser/remote-file-service-contribution.d.ts.map +1 -1
  143. package/lib/browser/remote-file-service-contribution.js +8 -12
  144. package/lib/browser/remote-file-service-contribution.js.map +1 -1
  145. package/lib/browser/upload/file-upload-service-impl.d.ts +3 -3
  146. package/lib/browser/upload/file-upload-service-impl.d.ts.map +1 -1
  147. package/lib/browser/upload/file-upload-service-impl.js +55 -64
  148. package/lib/browser/upload/file-upload-service-impl.js.map +1 -1
  149. package/lib/browser/vscode-file-service-contribution.d.ts +2 -2
  150. package/lib/browser/vscode-file-service-contribution.d.ts.map +1 -1
  151. package/lib/browser/vscode-file-service-contribution.js +23 -28
  152. package/lib/browser/vscode-file-service-contribution.js.map +1 -1
  153. package/lib/browser-only/browser-only-filesystem-frontend-module.js +21 -23
  154. package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
  155. package/lib/browser-only/browser-only-filesystem-provider-server.d.ts +1 -1
  156. package/lib/browser-only/browser-only-filesystem-provider-server.d.ts.map +1 -1
  157. package/lib/browser-only/browser-only-filesystem-provider-server.js +10 -13
  158. package/lib/browser-only/browser-only-filesystem-provider-server.js.map +1 -1
  159. package/lib/browser-only/download/file-download-command-contribution.d.ts +1 -1
  160. package/lib/browser-only/download/file-download-command-contribution.d.ts.map +1 -1
  161. package/lib/browser-only/download/file-download-command-contribution.js +14 -19
  162. package/lib/browser-only/download/file-download-command-contribution.js.map +1 -1
  163. package/lib/browser-only/download/file-download-frontend-module.js +8 -10
  164. package/lib/browser-only/download/file-download-frontend-module.js.map +1 -1
  165. package/lib/browser-only/download/file-download-service.d.ts +3 -3
  166. package/lib/browser-only/download/file-download-service.d.ts.map +1 -1
  167. package/lib/browser-only/download/file-download-service.js +26 -33
  168. package/lib/browser-only/download/file-download-service.js.map +1 -1
  169. package/lib/browser-only/file-search.d.ts.map +1 -1
  170. package/lib/browser-only/file-search.js +9 -14
  171. package/lib/browser-only/file-search.js.map +1 -1
  172. package/lib/browser-only/opfs-filesystem-initialization.d.ts +1 -1
  173. package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -1
  174. package/lib/browser-only/opfs-filesystem-initialization.js +6 -9
  175. package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -1
  176. package/lib/browser-only/opfs-filesystem-provider.d.ts +2 -2
  177. package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -1
  178. package/lib/browser-only/opfs-filesystem-provider.js +60 -68
  179. package/lib/browser-only/opfs-filesystem-provider.js.map +1 -1
  180. package/lib/browser-only/upload/file-upload-service-impl.d.ts +3 -3
  181. package/lib/browser-only/upload/file-upload-service-impl.d.ts.map +1 -1
  182. package/lib/browser-only/upload/file-upload-service-impl.js +51 -60
  183. package/lib/browser-only/upload/file-upload-service-impl.js.map +1 -1
  184. package/lib/common/delegating-file-system-provider.d.ts +1 -1
  185. package/lib/common/delegating-file-system-provider.d.ts.map +1 -1
  186. package/lib/common/delegating-file-system-provider.js +18 -22
  187. package/lib/common/delegating-file-system-provider.js.map +1 -1
  188. package/lib/common/download/file-download.js +5 -8
  189. package/lib/common/download/file-download.js.map +1 -1
  190. package/lib/common/file-upload.js +1 -4
  191. package/lib/common/file-upload.js.map +1 -1
  192. package/lib/common/files.js +38 -58
  193. package/lib/common/files.js.map +1 -1
  194. package/lib/common/files.spec.js +22 -24
  195. package/lib/common/files.spec.js.map +1 -1
  196. package/lib/common/filesystem-preferences.js +39 -44
  197. package/lib/common/filesystem-preferences.js.map +1 -1
  198. package/lib/common/filesystem-utils.d.ts +1 -1
  199. package/lib/common/filesystem-utils.d.ts.map +1 -1
  200. package/lib/common/filesystem-utils.js +2 -5
  201. package/lib/common/filesystem-utils.js.map +1 -1
  202. package/lib/common/filesystem-utils.spec.js +227 -229
  203. package/lib/common/filesystem-utils.spec.js.map +1 -1
  204. package/lib/common/filesystem-watcher-protocol.d.ts +5 -1
  205. package/lib/common/filesystem-watcher-protocol.d.ts.map +1 -1
  206. package/lib/common/filesystem-watcher-protocol.js +2 -5
  207. package/lib/common/filesystem-watcher-protocol.js.map +1 -1
  208. package/lib/common/filesystem.js +2 -5
  209. package/lib/common/filesystem.js.map +1 -1
  210. package/lib/common/index.d.ts +3 -3
  211. package/lib/common/index.d.ts.map +1 -1
  212. package/lib/common/index.js +3 -6
  213. package/lib/common/index.js.map +1 -1
  214. package/lib/common/io.d.ts +2 -2
  215. package/lib/common/io.d.ts.map +1 -1
  216. package/lib/common/io.js +10 -13
  217. package/lib/common/io.js.map +1 -1
  218. package/lib/common/remote-file-system-provider.d.ts +1 -1
  219. package/lib/common/remote-file-system-provider.d.ts.map +1 -1
  220. package/lib/common/remote-file-system-provider.js +81 -93
  221. package/lib/common/remote-file-system-provider.js.map +1 -1
  222. package/lib/common/upload/file-upload.js +1 -4
  223. package/lib/common/upload/file-upload.js.map +1 -1
  224. package/lib/electron-browser/file-dialog/electron-file-dialog-module.js +6 -8
  225. package/lib/electron-browser/file-dialog/electron-file-dialog-module.js.map +1 -1
  226. package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts +3 -3
  227. package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts.map +1 -1
  228. package/lib/electron-browser/file-dialog/electron-file-dialog-service.js +20 -24
  229. package/lib/electron-browser/file-dialog/electron-file-dialog-service.js.map +1 -1
  230. package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts +2 -0
  231. package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts.map +1 -0
  232. package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js +46 -0
  233. package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js.map +1 -0
  234. package/lib/electron-browser/preload.js +6 -9
  235. package/lib/electron-browser/preload.js.map +1 -1
  236. package/lib/electron-common/electron-api.js +2 -5
  237. package/lib/electron-common/electron-api.js.map +1 -1
  238. package/lib/electron-main/electron-api-main.js +15 -18
  239. package/lib/electron-main/electron-api-main.js.map +1 -1
  240. package/lib/electron-main/electron-main-module.js +6 -8
  241. package/lib/electron-main/electron-main-module.js.map +1 -1
  242. package/lib/node/disk-file-system-provider.d.ts +2 -2
  243. package/lib/node/disk-file-system-provider.d.ts.map +1 -1
  244. package/lib/node/disk-file-system-provider.js +116 -121
  245. package/lib/node/disk-file-system-provider.js.map +1 -1
  246. package/lib/node/disk-file-system-provider.spec.js +77 -54
  247. package/lib/node/disk-file-system-provider.spec.js.map +1 -1
  248. package/lib/node/download/directory-archiver.js +13 -16
  249. package/lib/node/download/directory-archiver.js.map +1 -1
  250. package/lib/node/download/directory-archiver.spec.js +20 -22
  251. package/lib/node/download/directory-archiver.spec.js.map +1 -1
  252. package/lib/node/download/file-download-backend-module.js +14 -16
  253. package/lib/node/download/file-download-backend-module.js.map +1 -1
  254. package/lib/node/download/file-download-cache.js +12 -16
  255. package/lib/node/download/file-download-cache.js.map +1 -1
  256. package/lib/node/download/file-download-endpoint.d.ts +1 -1
  257. package/lib/node/download/file-download-endpoint.d.ts.map +1 -1
  258. package/lib/node/download/file-download-endpoint.js +25 -31
  259. package/lib/node/download/file-download-endpoint.js.map +1 -1
  260. package/lib/node/download/file-download-handler.d.ts +2 -2
  261. package/lib/node/download/file-download-handler.d.ts.map +1 -1
  262. package/lib/node/download/file-download-handler.js +70 -77
  263. package/lib/node/download/file-download-handler.js.map +1 -1
  264. package/lib/node/download/test/mock-directory-archiver.d.ts +1 -1
  265. package/lib/node/download/test/mock-directory-archiver.d.ts.map +1 -1
  266. package/lib/node/download/test/mock-directory-archiver.js +2 -6
  267. package/lib/node/download/test/mock-directory-archiver.js.map +1 -1
  268. package/lib/node/file-change-collection.d.ts +1 -1
  269. package/lib/node/file-change-collection.d.ts.map +1 -1
  270. package/lib/node/file-change-collection.js +1 -5
  271. package/lib/node/file-change-collection.js.map +1 -1
  272. package/lib/node/file-change-collection.spec.js +5 -7
  273. package/lib/node/file-change-collection.spec.js.map +1 -1
  274. package/lib/node/filesystem-backend-module.d.ts +3 -3
  275. package/lib/node/filesystem-backend-module.d.ts.map +1 -1
  276. package/lib/node/filesystem-backend-module.js +57 -62
  277. package/lib/node/filesystem-backend-module.js.map +1 -1
  278. package/lib/node/filesystem-watcher-client.d.ts +2 -2
  279. package/lib/node/filesystem-watcher-client.d.ts.map +1 -1
  280. package/lib/node/filesystem-watcher-client.js +11 -16
  281. package/lib/node/filesystem-watcher-client.js.map +1 -1
  282. package/lib/node/filesystem-watcher-dispatcher.d.ts +1 -1
  283. package/lib/node/filesystem-watcher-dispatcher.d.ts.map +1 -1
  284. package/lib/node/filesystem-watcher-dispatcher.js +9 -13
  285. package/lib/node/filesystem-watcher-dispatcher.js.map +1 -1
  286. package/lib/node/filesystem-watcher-service-impl.d.ts +30 -0
  287. package/lib/node/filesystem-watcher-service-impl.d.ts.map +1 -0
  288. package/lib/node/filesystem-watcher-service-impl.js +88 -0
  289. package/lib/node/filesystem-watcher-service-impl.js.map +1 -0
  290. package/lib/node/filesystem-watcher-service-impl.spec.d.ts +2 -0
  291. package/lib/node/filesystem-watcher-service-impl.spec.d.ts.map +1 -0
  292. package/lib/node/filesystem-watcher-service-impl.spec.js +199 -0
  293. package/lib/node/filesystem-watcher-service-impl.spec.js.map +1 -0
  294. package/lib/node/filesystem-watcher.d.ts +93 -0
  295. package/lib/node/filesystem-watcher.d.ts.map +1 -0
  296. package/lib/node/filesystem-watcher.js +129 -0
  297. package/lib/node/filesystem-watcher.js.map +1 -0
  298. package/lib/node/nodejs-watcher/node-directory-watcher.d.ts +175 -0
  299. package/lib/node/nodejs-watcher/node-directory-watcher.d.ts.map +1 -0
  300. package/lib/node/nodejs-watcher/node-directory-watcher.js +574 -0
  301. package/lib/node/nodejs-watcher/node-directory-watcher.js.map +1 -0
  302. package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts +2 -0
  303. package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts.map +1 -0
  304. package/lib/node/nodejs-watcher/node-directory-watcher.spec.js +1281 -0
  305. package/lib/node/nodejs-watcher/node-directory-watcher.spec.js.map +1 -0
  306. package/lib/node/nodejs-watcher/watch-request-router.d.ts +63 -0
  307. package/lib/node/nodejs-watcher/watch-request-router.d.ts.map +1 -0
  308. package/lib/node/nodejs-watcher/watch-request-router.js +178 -0
  309. package/lib/node/nodejs-watcher/watch-request-router.js.map +1 -0
  310. package/lib/node/nodejs-watcher/watcher-host.d.ts +50 -0
  311. package/lib/node/nodejs-watcher/watcher-host.d.ts.map +1 -0
  312. package/lib/node/nodejs-watcher/watcher-host.js +94 -0
  313. package/lib/node/nodejs-watcher/watcher-host.js.map +1 -0
  314. package/lib/node/parcel-watcher/index.js +6 -8
  315. package/lib/node/parcel-watcher/index.js.map +1 -1
  316. package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts +14 -194
  317. package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -1
  318. package/lib/node/parcel-watcher/parcel-filesystem-service.js +5 -426
  319. package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -1
  320. package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js +23 -25
  321. package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js.map +1 -1
  322. package/lib/node/parcel-watcher/parcel-options.js +1 -4
  323. package/lib/node/parcel-watcher/parcel-options.js.map +1 -1
  324. package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js +12 -16
  325. package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js.map +1 -1
  326. package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js +11 -15
  327. package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js.map +1 -1
  328. package/lib/node/parcel-watcher/parcel-watcher.d.ts +165 -0
  329. package/lib/node/parcel-watcher/parcel-watcher.d.ts.map +1 -0
  330. package/lib/node/parcel-watcher/parcel-watcher.js +366 -0
  331. package/lib/node/parcel-watcher/parcel-watcher.js.map +1 -0
  332. package/lib/node/test/watcher-test-helper.d.ts +21 -0
  333. package/lib/node/test/watcher-test-helper.d.ts.map +1 -0
  334. package/lib/node/test/watcher-test-helper.js +51 -0
  335. package/lib/node/test/watcher-test-helper.js.map +1 -0
  336. package/lib/node/upload/node-file-upload-service.d.ts +1 -1
  337. package/lib/node/upload/node-file-upload-service.d.ts.map +1 -1
  338. package/lib/node/upload/node-file-upload-service.js +20 -25
  339. package/lib/node/upload/node-file-upload-service.js.map +1 -1
  340. package/lib/node/upload/node-file-upload-service.spec.js +21 -23
  341. package/lib/node/upload/node-file-upload-service.spec.js.map +1 -1
  342. package/package.json +21 -7
  343. package/src/browser/breadcrumbs/filepath-breadcrumb.ts +1 -1
  344. package/src/browser/breadcrumbs/filepath-breadcrumbs-container.ts +1 -1
  345. package/src/browser/breadcrumbs/filepath-breadcrumbs-contribution.ts +5 -5
  346. package/src/browser/download/file-download-command-contribution.ts +1 -1
  347. package/src/browser/download/file-download-frontend-module.ts +3 -3
  348. package/src/browser/download/file-download-service.ts +1 -2
  349. package/src/browser/file-dialog/file-dialog-container.ts +5 -5
  350. package/src/browser/file-dialog/file-dialog-hidden-files-renderer.tsx +1 -1
  351. package/src/browser/file-dialog/file-dialog-model.ts +2 -2
  352. package/src/browser/file-dialog/file-dialog-module.ts +5 -5
  353. package/src/browser/file-dialog/file-dialog-service.ts +4 -4
  354. package/src/browser/file-dialog/file-dialog-tree-filters-renderer.spec.ts +43 -0
  355. package/src/browser/file-dialog/file-dialog-tree-filters-renderer.tsx +4 -2
  356. package/src/browser/file-dialog/file-dialog-tree.ts +2 -2
  357. package/src/browser/file-dialog/file-dialog-widget.ts +2 -2
  358. package/src/browser/file-dialog/file-dialog.ts +17 -7
  359. package/src/browser/file-dialog/index.ts +4 -4
  360. package/src/browser/file-resource.spec.ts +3 -3
  361. package/src/browser/file-resource.ts +3 -3
  362. package/src/browser/file-selection.ts +1 -1
  363. package/src/browser/file-service-activation.spec.ts +93 -0
  364. package/src/browser/file-service-copy.spec.ts +226 -0
  365. package/src/browser/file-service-watcher.spec.ts +2 -2
  366. package/src/browser/file-service.ts +22 -11
  367. package/src/browser/file-tree/file-tree-container.ts +3 -3
  368. package/src/browser/file-tree/file-tree-decorator-adapter.spec.ts +1 -1
  369. package/src/browser/file-tree/file-tree-decorator-adapter.ts +1 -1
  370. package/src/browser/file-tree/file-tree-label-provider.ts +1 -1
  371. package/src/browser/file-tree/file-tree-model.ts +12 -6
  372. package/src/browser/file-tree/file-tree-widget.tsx +8 -5
  373. package/src/browser/file-tree/file-tree.ts +3 -3
  374. package/src/browser/file-tree/index.ts +6 -6
  375. package/src/browser/filesystem-frontend-contribution.ts +6 -6
  376. package/src/browser/filesystem-frontend-module.ts +14 -14
  377. package/src/browser/filesystem-saveable-service.ts +2 -2
  378. package/src/browser/index.ts +4 -4
  379. package/src/browser/location/index.ts +2 -2
  380. package/src/browser/location/location-renderer.spec.ts +3 -3
  381. package/src/browser/location/location-renderer.tsx +3 -3
  382. package/src/browser/remote-file-service-contribution.ts +2 -2
  383. package/src/browser/upload/file-upload-service-impl.ts +5 -5
  384. package/src/browser/vscode-file-service-contribution.ts +2 -2
  385. package/src/browser-only/browser-only-filesystem-frontend-module.ts +7 -7
  386. package/src/browser-only/browser-only-filesystem-provider-server.ts +1 -1
  387. package/src/browser-only/download/file-download-command-contribution.ts +2 -2
  388. package/src/browser-only/download/file-download-frontend-module.ts +3 -3
  389. package/src/browser-only/download/file-download-service.ts +3 -3
  390. package/src/browser-only/file-search.ts +2 -1
  391. package/src/browser-only/opfs-filesystem-initialization.ts +1 -1
  392. package/src/browser-only/opfs-filesystem-provider.ts +3 -3
  393. package/src/browser-only/upload/file-upload-service-impl.ts +4 -4
  394. package/src/common/delegating-file-system-provider.ts +1 -1
  395. package/src/common/files.spec.ts +1 -1
  396. package/src/common/filesystem-utils.spec.ts +2 -2
  397. package/src/common/filesystem-utils.ts +1 -1
  398. package/src/common/filesystem-watcher-protocol.ts +5 -1
  399. package/src/common/index.ts +3 -3
  400. package/src/common/io.ts +2 -2
  401. package/src/common/remote-file-system-provider.ts +1 -1
  402. package/src/electron-browser/file-dialog/electron-file-dialog-module.ts +2 -2
  403. package/src/electron-browser/file-dialog/electron-file-dialog-service.spec.ts +57 -0
  404. package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +5 -5
  405. package/src/electron-browser/preload.ts +1 -1
  406. package/src/electron-main/electron-api-main.ts +1 -1
  407. package/src/electron-main/electron-main-module.ts +1 -1
  408. package/src/node/disk-file-system-provider.spec.ts +32 -3
  409. package/src/node/disk-file-system-provider.ts +12 -8
  410. package/src/node/download/directory-archiver.spec.ts +1 -1
  411. package/src/node/download/file-download-backend-module.ts +4 -4
  412. package/src/node/download/file-download-cache.ts +1 -1
  413. package/src/node/download/file-download-endpoint.ts +4 -3
  414. package/src/node/download/file-download-handler.ts +3 -4
  415. package/src/node/download/test/mock-directory-archiver.ts +1 -1
  416. package/src/node/file-change-collection.spec.ts +2 -2
  417. package/src/node/file-change-collection.ts +1 -1
  418. package/src/node/filesystem-backend-module.ts +15 -14
  419. package/src/node/filesystem-watcher-client.ts +2 -2
  420. package/src/node/filesystem-watcher-dispatcher.ts +1 -1
  421. package/src/node/filesystem-watcher-service-impl.spec.ts +272 -0
  422. package/src/node/filesystem-watcher-service-impl.ts +109 -0
  423. package/src/node/filesystem-watcher.ts +197 -0
  424. package/src/node/nodejs-watcher/node-directory-watcher.spec.ts +1594 -0
  425. package/src/node/nodejs-watcher/node-directory-watcher.ts +664 -0
  426. package/src/node/nodejs-watcher/watch-request-router.ts +224 -0
  427. package/src/node/nodejs-watcher/watcher-host.ts +126 -0
  428. package/src/node/parcel-watcher/index.ts +3 -3
  429. package/src/node/parcel-watcher/parcel-filesystem-service.ts +14 -500
  430. package/src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts +5 -5
  431. package/src/node/parcel-watcher/parcel-watcher-exclude.spec.ts +7 -11
  432. package/src/node/parcel-watcher/parcel-watcher-retry.spec.ts +6 -8
  433. package/src/node/parcel-watcher/parcel-watcher.ts +433 -0
  434. package/src/node/test/watcher-test-helper.ts +58 -0
  435. package/src/node/upload/node-file-upload-service.spec.ts +1 -1
  436. package/src/node/upload/node-file-upload-service.ts +6 -6
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  // *****************************************************************************
3
2
  // Copyright (C) 2026 EclipseSource GmbH and others.
4
3
  //
@@ -14,17 +13,16 @@
14
13
  //
15
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
15
  // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- const chai_1 = require("chai");
19
- const os = require("os");
20
- const path = require("path");
21
- const fs = require("@theia/core/shared/fs-extra");
22
- const file_uri_1 = require("@theia/core/lib/common/file-uri");
23
- const node_file_upload_service_1 = require("./node-file-upload-service");
16
+ import { expect } from 'chai';
17
+ import * as os from 'os';
18
+ import * as path from 'path';
19
+ import * as fs from '@theia/core/shared/fs-extra';
20
+ import { FileUri } from '@theia/core/lib/common/file-uri';
21
+ import { NodeFileUploadService } from './node-file-upload-service.js';
24
22
  describe('NodeFileUploadService', () => {
25
23
  let tempDir;
26
24
  function createService() {
27
- const service = new node_file_upload_service_1.NodeFileUploadService();
25
+ const service = new NodeFileUploadService();
28
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
27
  service['logger'] = { error: () => { } };
30
28
  return service;
@@ -64,44 +62,44 @@ describe('NodeFileUploadService', () => {
64
62
  const source = path.join(tempDir, 'source.txt');
65
63
  await fs.writeFile(source, 'payload');
66
64
  const captured = await handleUpload(source, { uri: 'http://evil.example/usr/bin/bash' });
67
- (0, chai_1.expect)(captured.sentStatus).to.equal(400);
65
+ expect(captured.sentStatus).to.equal(400);
68
66
  // The scoped-write guard must reject before any file operation runs.
69
- (0, chai_1.expect)(await fs.pathExists(source)).to.be.true;
67
+ expect(await fs.pathExists(source)).to.be.true;
70
68
  });
71
69
  it('should reject a remote-scheme URI with 400', async () => {
72
70
  const source = path.join(tempDir, 'source.txt');
73
71
  await fs.writeFile(source, 'payload');
74
72
  const captured = await handleUpload(source, { uri: 'vscode-remote://host/usr/bin/bash' });
75
- (0, chai_1.expect)(captured.sentStatus).to.equal(400);
76
- (0, chai_1.expect)(await fs.pathExists(source)).to.be.true;
73
+ expect(captured.sentStatus).to.equal(400);
74
+ expect(await fs.pathExists(source)).to.be.true;
77
75
  });
78
76
  it('should reject a missing uri field with 400', async () => {
79
77
  const source = path.join(tempDir, 'source.txt');
80
78
  await fs.writeFile(source, 'payload');
81
79
  const captured = await handleUpload(source, {});
82
- (0, chai_1.expect)(captured.sentStatus).to.equal(400);
80
+ expect(captured.sentStatus).to.equal(400);
83
81
  });
84
82
  it('should reject a missing file with 400', async () => {
85
- const target = file_uri_1.FileUri.create(path.join(tempDir, 'target.txt')).toString();
83
+ const target = FileUri.create(path.join(tempDir, 'target.txt')).toString();
86
84
  const captured = await handleUpload(undefined, { uri: target });
87
- (0, chai_1.expect)(captured.sentStatus).to.equal(400);
85
+ expect(captured.sentStatus).to.equal(400);
88
86
  });
89
87
  it('should accept a file: URI and move the upload to the target', async () => {
90
88
  const source = path.join(tempDir, 'source.txt');
91
89
  await fs.writeFile(source, 'payload');
92
90
  const targetPath = path.join(tempDir, 'target.txt');
93
- const target = file_uri_1.FileUri.create(targetPath).toString();
91
+ const target = FileUri.create(targetPath).toString();
94
92
  const captured = await handleUpload(source, { uri: target });
95
- (0, chai_1.expect)(captured.sentStatus).to.be.undefined;
96
- (0, chai_1.expect)(captured.statusCode).to.equal(200);
93
+ expect(captured.sentStatus).to.be.undefined;
94
+ expect(captured.statusCode).to.equal(200);
97
95
  // Compare against the canonical fs-path of the URI: on Windows the create/fsPath round-trip
98
96
  // normalizes the drive letter to lower-case (e.g. `C:` -> `c:`), which would otherwise fail
99
97
  // an exact string match against `targetPath` derived from `os.tmpdir()`.
100
- (0, chai_1.expect)(captured.body).to.equal(file_uri_1.FileUri.fsPath(target));
101
- (0, chai_1.expect)(await fs.pathExists(targetPath)).to.be.true;
102
- (0, chai_1.expect)(await fs.readFile(targetPath, 'utf8')).to.equal('payload');
98
+ expect(captured.body).to.equal(FileUri.fsPath(target));
99
+ expect(await fs.pathExists(targetPath)).to.be.true;
100
+ expect(await fs.readFile(targetPath, 'utf8')).to.equal('payload');
103
101
  // The temp source file was moved, not copied.
104
- (0, chai_1.expect)(await fs.pathExists(source)).to.be.false;
102
+ expect(await fs.pathExists(source)).to.be.false;
105
103
  });
106
104
  });
107
105
  //# sourceMappingURL=node-file-upload-service.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-file-upload-service.spec.js","sourceRoot":"","sources":["../../../src/node/upload/node-file-upload-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,yBAAyB;AACzB,6BAA6B;AAC7B,kDAAkD;AAClD,8DAA0D;AAC1D,yEAAmE;AASnE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAEnC,IAAI,OAAe,CAAC;IAEpB,SAAS,aAAa;QAClB,MAAM,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;QAC5C,8DAA8D;QAC7D,OAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,SAAS,cAAc;QACnB,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG;YACR,MAAM,CAAC,IAAY;gBACf,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC3B,OAAO,GAAG,CAAC;YACf,CAAC;YACD,IAAI,CAAC,IAAa;gBACd,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,CAAC;YACD,UAAU,CAAC,IAAY;gBACnB,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/B,CAAC;SACJ,CAAC;QACF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,QAA4B,EAAE,IAAa;QACnE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;QACxF,sFAAsF;QACtF,8DAA8D;QAC9D,MAAO,OAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACzF,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,qEAAqE;QACrE,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAC1F,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,kBAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7D,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,4FAA4F;QAC5F,4FAA4F;QAC5F,yEAAyE;QACzE,IAAA,aAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACnD,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClE,8CAA8C;QAC9C,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"node-file-upload-service.spec.js","sourceRoot":"","sources":["../../../src/node/upload/node-file-upload-service.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,28 @@
1
1
  {
2
2
  "name": "@theia/filesystem",
3
- "version": "1.77.0-next.1+8b94967c4",
3
+ "version": "1.77.0-next.108+30a548238",
4
4
  "description": "Theia - FileSystem Extension",
5
+ "type": "module",
5
6
  "dependencies": {
6
- "@theia/core": "1.77.0-next.1+8b94967c4",
7
+ "@theia/core": "1.77.0-next.108+30a548238",
7
8
  "@types/body-parser": "^1.19.6",
8
9
  "@types/multer": "^1.4.13",
9
10
  "@types/tar-fs": "^1.16.3",
10
- "@types/tar-stream": "^3.1.4",
11
+ "@types/tar-stream": "^3.1.5",
11
12
  "async-mutex": "^0.3.2",
12
13
  "body-parser": "^1.20.8",
13
14
  "http-status-codes": "^1.4.0",
14
15
  "ignore": "^6.0.2",
15
16
  "minimatch": "^10.2.6",
16
- "multer": "^2.3.0",
17
+ "multer": "^2.4.0",
17
18
  "opfs-worker": "1.3.1",
18
19
  "rimraf": "^5.0.10",
19
20
  "stat-mode": "^1.0.0",
20
21
  "tar-fs": "^3.1.3",
21
- "tar-stream": "^3.2.1",
22
+ "tar-stream": "^3.2.2",
22
23
  "trash": "^7.2.0",
23
24
  "tslib": "^2.8.1",
24
- "vscode-languageserver-textdocument": "^1.0.14"
25
+ "vscode-languageserver-textdocument": "^1.0.15"
25
26
  },
26
27
  "publishConfig": {
27
28
  "access": "public"
@@ -82,5 +83,18 @@
82
83
  "nyc": {
83
84
  "extends": "../../configs/nyc.json"
84
85
  },
85
- "gitHead": "8b94967c4cfa0dcf688a345d28b3ac2e0d7e298a"
86
+ "gitHead": "30a5482386400715f42b541b4b142fd399ada7f3",
87
+ "exports": {
88
+ "./package.json": "./package.json",
89
+ "./lib/browser": "./lib/browser/index.js",
90
+ "./lib/browser/file-dialog": "./lib/browser/file-dialog/index.js",
91
+ "./lib/browser/file-tree": "./lib/browser/file-tree/index.js",
92
+ "./lib/browser/location": "./lib/browser/location/index.js",
93
+ "./lib/common": "./lib/common/index.js",
94
+ "./lib/node/parcel-watcher": "./lib/node/parcel-watcher/index.js",
95
+ "./lib/*.json": "./lib/*.json",
96
+ "./lib/*.js": "./lib/*.js",
97
+ "./lib/*": "./lib/*.js",
98
+ "./*": "./*"
99
+ }
86
100
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import URI from '@theia/core/lib/common/uri';
18
18
  import { Breadcrumb } from '@theia/core/lib/browser/breadcrumbs/breadcrumbs-constants';
19
- import { FilepathBreadcrumbType } from './filepath-breadcrumbs-contribution';
19
+ import { FilepathBreadcrumbType } from './filepath-breadcrumbs-contribution.js';
20
20
 
21
21
  export class FilepathBreadcrumb implements Breadcrumb {
22
22
  constructor(
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { Container, interfaces, injectable, inject } from '@theia/core/shared/inversify';
18
18
  import { TreeProps, ContextMenuRenderer, TreeNode, open, NodeProps, defaultTreeProps } from '@theia/core/lib/browser';
19
- import { FileTreeModel, FileStatNode, createFileTreeContainer, FileTreeWidget } from '../file-tree';
19
+ import { FileTreeModel, FileStatNode, createFileTreeContainer, FileTreeWidget } from '../file-tree/index.js';
20
20
 
21
21
  const BREADCRUMBS_FILETREE_CLASS = 'theia-FilepathBreadcrumbFileTree';
22
22
 
@@ -18,11 +18,11 @@ import { Disposable, Emitter, Event } from '@theia/core';
18
18
  import { injectable, inject } from '@theia/core/shared/inversify';
19
19
  import URI from '@theia/core/lib/common/uri';
20
20
  import { Breadcrumb, BreadcrumbsContribution, CompositeTreeNode, LabelProvider, SelectableTreeNode, Widget } from '@theia/core/lib/browser';
21
- import { FilepathBreadcrumb } from './filepath-breadcrumb';
22
- import { BreadcrumbsFileTreeWidget } from './filepath-breadcrumbs-container';
23
- import { DirNode } from '../file-tree';
24
- import { FileService } from '../file-service';
25
- import { FileStat } from '../../common/files';
21
+ import { FilepathBreadcrumb } from './filepath-breadcrumb.js';
22
+ import { BreadcrumbsFileTreeWidget } from './filepath-breadcrumbs-container.js';
23
+ import { DirNode } from '../file-tree/index.js';
24
+ import { FileService } from '../file-service.js';
25
+ import { FileStat } from '../../common/files.js';
26
26
 
27
27
  export const FilepathBreadcrumbType = Symbol('FilepathBreadcrumb');
28
28
 
@@ -21,7 +21,7 @@ import { environment } from '@theia/core/shared/@theia/application-package/lib/e
21
21
  import { SelectionService } from '@theia/core/lib/common/selection-service';
22
22
  import { Command, CommandContribution, CommandRegistry } from '@theia/core/lib/common/command';
23
23
  import { UriAwareCommandHandler } from '@theia/core/lib/common/uri-command-handler';
24
- import { FileDownloadService } from '../../common/download/file-download';
24
+ import { FileDownloadService } from '../../common/download/file-download.js';
25
25
  import { CommonCommands } from '@theia/core/lib/browser';
26
26
 
27
27
  @injectable()
@@ -16,9 +16,9 @@
16
16
 
17
17
  import { ContainerModule } from '@theia/core/shared/inversify';
18
18
  import { CommandContribution } from '@theia/core/lib/common/command';
19
- import { FileDownloadService } from '../../common/download/file-download';
20
- import { FileDownloadServiceImpl } from './file-download-service';
21
- import { FileDownloadCommandContribution } from './file-download-command-contribution';
19
+ import { FileDownloadService } from '../../common/download/file-download.js';
20
+ import { FileDownloadServiceImpl } from './file-download-service.js';
21
+ import { FileDownloadCommandContribution } from './file-download-command-contribution.js';
22
22
 
23
23
  export default new ContainerModule(bind => {
24
24
  bind(FileDownloadService).to(FileDownloadServiceImpl).inSingletonScope();
@@ -20,7 +20,7 @@ import { Endpoint } from '@theia/core/lib/browser/endpoint';
20
20
  import { MessageService } from '@theia/core/lib/common/message-service';
21
21
  import { addClipboardListener } from '@theia/core/lib/browser/widgets';
22
22
  import { ILogger, nls } from '@theia/core';
23
- import type { FileDownloadData, FileDownloadService } from '../../common/download/file-download';
23
+ import type { FileDownloadData, FileDownloadService } from '../../common/download/file-download.js';
24
24
 
25
25
  @injectable()
26
26
  export class FileDownloadServiceImpl implements FileDownloadService {
@@ -152,7 +152,6 @@ export class FileDownloadServiceImpl implements FileDownloadService {
152
152
  protected url(uris: URI[]): string {
153
153
  const endpoint = this.endpoint();
154
154
  if (uris.length === 1) {
155
- // tslint:disable-next-line:whitespace
156
155
  const [uri,] = uris;
157
156
  return `${endpoint}/?uri=${uri.toString()}`;
158
157
  }
@@ -16,11 +16,11 @@
16
16
 
17
17
  import { interfaces, Container } from '@theia/core/shared/inversify';
18
18
  import { Tree, TreeModel, TreeProps, defaultTreeProps } from '@theia/core/lib/browser';
19
- import { createFileTreeContainer, FileTreeModel, FileTreeWidget } from '../file-tree';
20
- import { OpenFileDialog, OpenFileDialogProps, SaveFileDialog, SaveFileDialogProps } from './file-dialog';
21
- import { FileDialogModel } from './file-dialog-model';
22
- import { FileDialogWidget } from './file-dialog-widget';
23
- import { FileDialogTree } from './file-dialog-tree';
19
+ import { createFileTreeContainer, FileTreeModel, FileTreeWidget } from '../file-tree/index.js';
20
+ import { OpenFileDialog, OpenFileDialogProps, SaveFileDialog, SaveFileDialogProps } from './file-dialog.js';
21
+ import { FileDialogModel } from './file-dialog-model.js';
22
+ import { FileDialogWidget } from './file-dialog-widget.js';
23
+ import { FileDialogTree } from './file-dialog-tree.js';
24
24
 
25
25
  export function createFileDialogContainer(parent: interfaces.Container): Container {
26
26
  const child = createFileTreeContainer(parent);
@@ -18,7 +18,7 @@ import { nls } from '@theia/core';
18
18
  import { ReactRenderer } from '@theia/core/lib/browser';
19
19
  import { inject, postConstruct } from '@theia/core/shared/inversify';
20
20
  import * as React from '@theia/core/shared/react';
21
- import { FileDialogTree } from './file-dialog-tree';
21
+ import { FileDialogTree } from './file-dialog-tree.js';
22
22
 
23
23
  const TOGGLE_HIDDEN_PANEL_CLASS = 'theia-ToggleHiddenPanel';
24
24
  const TOGGLE_HIDDEN_CONTAINER_CLASS = 'theia-ToggleHiddenInputContainer';
@@ -18,8 +18,8 @@ import { injectable, inject, postConstruct } from '@theia/core/shared/inversify'
18
18
  import URI from '@theia/core/lib/common/uri';
19
19
  import { Emitter, Event } from '@theia/core/lib/common';
20
20
  import { TreeNode, SelectableTreeNode } from '@theia/core/lib/browser';
21
- import { DirNode, FileNode, FileTreeModel, FileStatNode } from '../file-tree';
22
- import { FileDialogTree } from './file-dialog-tree';
21
+ import { DirNode, FileNode, FileTreeModel, FileStatNode } from '../file-tree/index.js';
22
+ import { FileDialogTree } from './file-dialog-tree.js';
23
23
 
24
24
  @injectable()
25
25
  export class FileDialogModel extends FileTreeModel {
@@ -15,11 +15,11 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { ContainerModule } from '@theia/core/shared/inversify';
18
- import { LocationListRenderer, LocationListRendererFactory, LocationListRendererOptions } from '../location';
19
- import { FileDialogHiddenFilesToggleRenderer, HiddenFilesToggleRendererFactory } from './file-dialog-hidden-files-renderer';
20
- import { DefaultFileDialogService, FileDialogService } from './file-dialog-service';
21
- import { FileDialogTree } from './file-dialog-tree';
22
- import { FileDialogTreeFiltersRenderer, FileDialogTreeFiltersRendererFactory, FileDialogTreeFiltersRendererOptions } from './file-dialog-tree-filters-renderer';
18
+ import { LocationListRenderer, LocationListRendererFactory, LocationListRendererOptions } from '../location/index.js';
19
+ import { FileDialogHiddenFilesToggleRenderer, HiddenFilesToggleRendererFactory } from './file-dialog-hidden-files-renderer.js';
20
+ import { DefaultFileDialogService, FileDialogService } from './file-dialog-service.js';
21
+ import { FileDialogTree } from './file-dialog-tree.js';
22
+ import { FileDialogTreeFiltersRenderer, FileDialogTreeFiltersRendererFactory, FileDialogTreeFiltersRendererOptions } from './file-dialog-tree-filters-renderer.js';
23
23
  export default new ContainerModule(bind => {
24
24
  bind(DefaultFileDialogService).toSelf().inSingletonScope();
25
25
  bind(FileDialogService).toService(DefaultFileDialogService);
@@ -18,10 +18,10 @@ import { injectable, inject } from '@theia/core/shared/inversify';
18
18
  import URI from '@theia/core/lib/common/uri';
19
19
  import { MaybeArray, UNTITLED_SCHEME, nls } from '@theia/core/lib/common';
20
20
  import { LabelProvider } from '@theia/core/lib/browser';
21
- import { FileStat } from '../../common/files';
22
- import { DirNode } from '../file-tree';
23
- import { OpenFileDialogFactory, OpenFileDialogProps, SaveFileDialogFactory, SaveFileDialogProps } from './file-dialog';
24
- import { FileService } from '../file-service';
21
+ import { FileStat } from '../../common/files.js';
22
+ import { DirNode } from '../file-tree/index.js';
23
+ import { OpenFileDialogFactory, OpenFileDialogProps, SaveFileDialogFactory, SaveFileDialogProps } from './file-dialog.js';
24
+ import { FileService } from '../file-service.js';
25
25
  import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
26
26
  import { UserWorkingDirectoryProvider } from '@theia/core/lib/browser/user-working-directory-provider';
27
27
 
@@ -0,0 +1,43 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 Vinay Kaushal and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
18
+ let disableJSDOM = enableJSDOM();
19
+
20
+ import { expect } from 'chai';
21
+ import { FileDialogTree } from './file-dialog-tree.js';
22
+ import { FileDialogTreeFiltersRenderer } from './file-dialog-tree-filters-renderer.js';
23
+
24
+ disableJSDOM();
25
+
26
+ describe('FileDialogTreeFiltersRenderer', () => {
27
+
28
+ before(() => disableJSDOM = enableJSDOM());
29
+ after(() => disableJSDOM());
30
+
31
+ const suppliedFilters = { 'Theia Workspace': ['theia-workspace'] };
32
+ const fileDialogTree = {} as FileDialogTree;
33
+
34
+ it('offers the supplied filters followed by All Files', () => {
35
+ const renderer = new FileDialogTreeFiltersRenderer({ suppliedFilters, fileDialogTree });
36
+ expect(Object.keys(renderer.appliedFilters)).to.deep.equal(['Theia Workspace', 'All Files']);
37
+ });
38
+
39
+ it('offers only the supplied filters if All Files is disabled', () => {
40
+ const renderer = new FileDialogTreeFiltersRenderer({ suppliedFilters, fileDialogTree, disableAllFilesFilter: true });
41
+ expect(Object.keys(renderer.appliedFilters)).to.deep.equal(['Theia Workspace']);
42
+ });
43
+ });
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { ReactRenderer } from '@theia/core/lib/browser/widgets/react-renderer';
18
- import { FileDialogTree } from './file-dialog-tree';
18
+ import { FileDialogTree } from './file-dialog-tree.js';
19
19
  import * as React from '@theia/core/shared/react';
20
20
  import { inject, injectable } from '@theia/core/shared/inversify';
21
21
 
@@ -44,6 +44,8 @@ export const FileDialogTreeFiltersRendererOptions = Symbol('FileDialogTreeFilter
44
44
  export interface FileDialogTreeFiltersRendererOptions {
45
45
  suppliedFilters: FileDialogTreeFilters;
46
46
  fileDialogTree: FileDialogTree;
47
+ /** Whether to omit the `All Files` filter. Defaults to `false`. */
48
+ disableAllFilesFilter?: boolean;
47
49
  }
48
50
 
49
51
  @injectable()
@@ -59,7 +61,7 @@ export class FileDialogTreeFiltersRenderer extends ReactRenderer {
59
61
  super();
60
62
  this.suppliedFilters = options.suppliedFilters;
61
63
  this.fileDialogTree = options.fileDialogTree;
62
- this.appliedFilters = { ...this.suppliedFilters, 'All Files': [], };
64
+ this.appliedFilters = options.disableAllFilesFilter ? { ...this.suppliedFilters } : { ...this.suppliedFilters, 'All Files': [], };
63
65
  }
64
66
 
65
67
  protected readonly handleFilterChanged = (e: React.ChangeEvent<HTMLSelectElement>) => this.onFilterChanged(e);
@@ -15,9 +15,9 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable } from '@theia/core/shared/inversify';
18
- import { DirNode, FileTree } from '../file-tree';
18
+ import { DirNode, FileTree } from '../file-tree/index.js';
19
19
  import { TreeNode, CompositeTreeNode } from '@theia/core/lib/browser/tree/tree';
20
- import { FileStat } from '../../common/files';
20
+ import { FileStat } from '../../common/files.js';
21
21
 
22
22
  @injectable()
23
23
  export class FileDialogTree extends FileTree {
@@ -16,8 +16,8 @@
16
16
 
17
17
  import { injectable, inject } from '@theia/core/shared/inversify';
18
18
  import { ContextMenuRenderer, NodeProps, TreeProps, TreeNode, SELECTED_CLASS, FOCUS_CLASS } from '@theia/core/lib/browser';
19
- import { FileTreeWidget, FileStatNode } from '../file-tree';
20
- import { FileDialogModel } from './file-dialog-model';
19
+ import { FileTreeWidget, FileStatNode } from '../file-tree/index.js';
20
+ import { FileDialogModel } from './file-dialog-model.js';
21
21
 
22
22
  export const FILE_DIALOG_CLASS = 'theia-FileDialog';
23
23
  export const NOT_SELECTABLE_CLASS = 'theia-mod-not-selectable';
@@ -18,15 +18,15 @@ import { injectable, inject, postConstruct } from '@theia/core/shared/inversify'
18
18
  import { Message } from '@theia/core/shared/@lumino/messaging';
19
19
  import { Disposable, MaybeArray, nls } from '@theia/core/lib/common';
20
20
  import { AbstractDialog, DialogProps, setEnabled, createIconButton, Widget, codiconArray, Key, LabelProvider } from '@theia/core/lib/browser';
21
- import { FileStatNode } from '../file-tree';
22
- import { LocationListRenderer, LocationListRendererFactory } from '../location';
23
- import { FileDialogModel } from './file-dialog-model';
24
- import { FileDialogWidget } from './file-dialog-widget';
25
- import { FileDialogTreeFiltersRenderer, FileDialogTreeFilters, FileDialogTreeFiltersRendererFactory } from './file-dialog-tree-filters-renderer';
21
+ import { FileStatNode } from '../file-tree/index.js';
22
+ import { LocationListRenderer, LocationListRendererFactory } from '../location/index.js';
23
+ import { FileDialogModel } from './file-dialog-model.js';
24
+ import { FileDialogWidget } from './file-dialog-widget.js';
25
+ import { FileDialogTreeFiltersRenderer, FileDialogTreeFilters, FileDialogTreeFiltersRendererFactory } from './file-dialog-tree-filters-renderer.js';
26
26
  import URI from '@theia/core/lib/common/uri';
27
27
  import { Panel } from '@theia/core/shared/@lumino/widgets';
28
28
  import * as DOMPurify from '@theia/core/shared/dompurify';
29
- import { FileDialogHiddenFilesToggleRenderer, HiddenFilesToggleRendererFactory } from './file-dialog-hidden-files-renderer';
29
+ import { FileDialogHiddenFilesToggleRenderer, HiddenFilesToggleRendererFactory } from './file-dialog-hidden-files-renderer.js';
30
30
 
31
31
  export const OpenFileDialogFactory = Symbol('OpenFileDialogFactory');
32
32
  export interface OpenFileDialogFactory {
@@ -76,6 +76,12 @@ export class FileDialogProps extends DialogProps {
76
76
  */
77
77
  filters?: FileDialogTreeFilters;
78
78
 
79
+ /**
80
+ * Whether to omit the `All Files` filter that is otherwise offered next to the given `filters`.
81
+ * Defaults to `false`.
82
+ */
83
+ disableAllFilesFilter?: boolean;
84
+
79
85
  /**
80
86
  * Determines if the dialog window should be modal.
81
87
  * Defaults to `true`.
@@ -204,7 +210,11 @@ export abstract class FileDialog<T> extends AbstractDialog<T> {
204
210
  });
205
211
 
206
212
  if (this.props.filters) {
207
- this.treeFiltersRenderer = this.treeFiltersFactory({ suppliedFilters: this.props.filters, fileDialogTree: this.widget.model.tree });
213
+ this.treeFiltersRenderer = this.treeFiltersFactory({
214
+ suppliedFilters: this.props.filters,
215
+ fileDialogTree: this.widget.model.tree,
216
+ disableAllFilesFilter: this.props.disableAllFilesFilter
217
+ });
208
218
  const filters = Object.keys(this.props.filters);
209
219
  if (filters.length) {
210
220
  this.widget.model.tree.setFilter(this.props.filters[filters[0]]);
@@ -14,7 +14,7 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- export * from './file-dialog';
18
- export * from './file-dialog-container';
19
- export * from './file-dialog-tree-filters-renderer';
20
- export * from './file-dialog-service';
17
+ export * from './file-dialog.js';
18
+ export * from './file-dialog-container.js';
19
+ export * from './file-dialog-tree-filters-renderer.js';
20
+ export * from './file-dialog-service.js';
@@ -24,9 +24,9 @@ import { Disposable, Emitter, URI } from '@theia/core';
24
24
  import { Deferred } from '@theia/core/lib/common/promise-util';
25
25
  import { expect } from 'chai';
26
26
  import * as sinon from 'sinon';
27
- import { FileChangesEvent, FileChangeType, FileStatWithMetadata } from '../common/files';
28
- import { FileResource } from './file-resource';
29
- import { FileService } from './file-service';
27
+ import { FileChangesEvent, FileChangeType, FileStatWithMetadata } from '../common/files.js';
28
+ import { FileResource } from './file-resource.js';
29
+ import { FileService } from './file-service.js';
30
30
 
31
31
  disableJSDOM();
32
32
 
@@ -20,11 +20,11 @@ import { DisposableCollection } from '@theia/core/lib/common/disposable';
20
20
  import { Emitter, Event } from '@theia/core/lib/common/event';
21
21
  import { Readable, ReadableStream } from '@theia/core/lib/common/stream';
22
22
  import URI from '@theia/core/lib/common/uri';
23
- import { FileOperation, FileOperationError, FileOperationResult, ETAG_DISABLED, FileSystemProviderCapabilities, FileReadStreamOptions, BinarySize } from '../common/files';
24
- import { FileService, TextFileOperationError, TextFileOperationResult } from './file-service';
23
+ import { FileOperation, FileOperationError, FileOperationResult, ETAG_DISABLED, FileSystemProviderCapabilities, FileReadStreamOptions, BinarySize } from '../common/files.js';
24
+ import { FileService, TextFileOperationError, TextFileOperationResult } from './file-service.js';
25
25
  import { ConfirmDialog, Dialog } from '@theia/core/lib/browser/dialogs';
26
26
  import { LabelProvider } from '@theia/core/lib/browser/label-provider';
27
- import { GENERAL_MAX_FILE_SIZE_MB } from '../common/filesystem-preferences';
27
+ import { GENERAL_MAX_FILE_SIZE_MB } from '../common/filesystem-preferences.js';
28
28
  import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
29
29
  import { nls } from '@theia/core';
30
30
  import { MarkdownString } from '@theia/core/lib/common/markdown-rendering';
@@ -17,7 +17,7 @@
17
17
  import { SelectionService } from '@theia/core/lib/common/selection-service';
18
18
  import { SelectionCommandHandler } from '@theia/core/lib/common/selection-command-handler';
19
19
  import { isObject } from '@theia/core/lib/common';
20
- import { FileStat } from '../common/files';
20
+ import { FileStat } from '../common/files.js';
21
21
 
22
22
  export interface FileSelection {
23
23
  fileStat: FileStat
@@ -0,0 +1,93 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
18
+ let disableJSDOM = enableJSDOM();
19
+
20
+ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
21
+ FrontendApplicationConfigProvider.set({});
22
+
23
+ import { Disposable, URI } from '@theia/core';
24
+ import { expect } from 'chai';
25
+ import { FileSystemProvider, FileSystemProviderCapabilities, WatchOptions } from '../common/files.js';
26
+ import { FileService } from './file-service.js';
27
+
28
+ disableJSDOM();
29
+
30
+ function createMockProvider(): FileSystemProvider {
31
+ return {
32
+ capabilities: FileSystemProviderCapabilities.PathCaseSensitive,
33
+ onDidChangeCapabilities: () => Disposable.NULL,
34
+ onDidChangeFile: () => Disposable.NULL,
35
+ onFileWatchError: () => Disposable.NULL,
36
+ watch: (_resource: URI, _options: WatchOptions): Disposable => Disposable.NULL,
37
+ stat: () => { throw new Error('not implemented'); },
38
+ readdir: () => { throw new Error('not implemented'); },
39
+ readFile: () => { throw new Error('not implemented'); },
40
+ writeFile: () => { throw new Error('not implemented'); },
41
+ delete: () => { throw new Error('not implemented'); },
42
+ mkdir: () => { throw new Error('not implemented'); },
43
+ rename: () => { throw new Error('not implemented'); },
44
+ } as FileSystemProvider;
45
+ }
46
+
47
+ /** Resolve to the given value, or to `'PENDING'` if `promise` does not settle within `millis`. */
48
+ function withinTimeout<T>(promise: Promise<T>, millis = 200): Promise<T | 'PENDING'> {
49
+ return Promise.race([
50
+ promise,
51
+ new Promise<'PENDING'>(resolve => setTimeout(() => resolve('PENDING'), millis))
52
+ ]);
53
+ }
54
+
55
+ describe('FileService activateProvider resilience (#17506)', () => {
56
+
57
+ before(() => {
58
+ disableJSDOM = enableJSDOM();
59
+ });
60
+
61
+ after(() => {
62
+ disableJSDOM();
63
+ });
64
+
65
+ it('resolves a pending activation once a provider is registered, even if an onWillActivate listener never settles', async () => {
66
+ const fileService = new FileService();
67
+ const scheme = 'user-storage';
68
+ const provider = createMockProvider();
69
+
70
+ // Reproduce the real-world hang: an `onWillActivateFileSystemProvider` listener whose
71
+ // `waitUntil` promise never settles. In the wild this happens when an awaited dependency
72
+ // inside the listener (e.g. a lost RPC reply, or a detached microtask in `createProvider`)
73
+ // never resolves, leaving `WaitUntilEvent.fire`'s `Promise.all(waitables)` pending forever.
74
+ fileService.onWillActivateFileSystemProvider(event => {
75
+ if (event.scheme === scheme) {
76
+ event.waitUntil(new Promise<void>(() => { /* never settles */ }));
77
+ }
78
+ });
79
+
80
+ const activation = fileService.activateProvider(scheme);
81
+
82
+ // The provider does become available (as the reporter demonstrated by registering it
83
+ // manually against the live, hung frontend container).
84
+ fileService.registerProvider(scheme, provider);
85
+
86
+ // Before the fix: `activateProvider` is coupled to the settlement of every listener's
87
+ // `waitUntil` promise, so the dangling listener wedges the activation permanently and
88
+ // this resolves to 'PENDING'. After the fix: registering the provider resolves the
89
+ // pending activation immediately.
90
+ const resolved = await withinTimeout(activation);
91
+ expect(resolved).to.equal(provider);
92
+ });
93
+ });