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

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 +4 -4
  98. package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
  99. package/lib/browser/file-tree/file-tree-model.js +42 -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 +63 -71
  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 +5 -5
  372. package/src/browser/file-tree/file-tree-widget.tsx +4 -4
  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 +1 @@
1
- {"version":3,"file":"file-selection.js","sourceRoot":"","sources":["../../src/browser/file-selection.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;;;AAGhF,gGAA2F;AAC3F,mDAAkD;AAClD,2CAA2C;AAK3C,IAAiB,aAAa,CAmB7B;AAnBD,WAAiB,aAAa;IAC1B,SAAgB,EAAE,CAAC,GAAY;QAC3B,OAAO,IAAA,iBAAQ,EAAgB,GAAG,CAAC,IAAI,gBAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAFe,gBAAE,KAEjB,CAAA;IACD,MAAa,cAAe,SAAQ,mDAAsC;QAEtE,YACgC,gBAAkC,EAClC,OAAuD;YAEnF,KAAK,CACD,gBAAgB,EAChB,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,CACV,CAAC;YAP0B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,YAAO,GAAP,OAAO,CAAgD;QAOvF,CAAC;KAEJ;IAbY,4BAAc,iBAa1B,CAAA;AAEL,CAAC,EAnBgB,aAAa,6BAAb,aAAa,QAmB7B"}
1
+ {"version":3,"file":"file-selection.js","sourceRoot":"","sources":["../../src/browser/file-selection.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;AAGhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,MAAM,KAAW,aAAa,CAmB7B;AAnBD,WAAiB,aAAa;IAC1B,SAAgB,EAAE,CAAC,GAAY;QAC3B,OAAO,QAAQ,CAAgB,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAFe,gBAAE,KAEjB,CAAA;IACD,MAAa,cAAe,SAAQ,uBAAsC;QAEtE,YACgC,gBAAkC,EAClC,OAAuD;YAEnF,KAAK,CACD,gBAAgB,EAChB,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,CACV,CAAC;YAP0B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,YAAO,GAAP,OAAO,CAAgD;QAOvF,CAAC;KAEJ;IAbY,4BAAc,iBAa1B,CAAA;AAEL,CAAC,EAnBgB,aAAa,KAAb,aAAa,QAmB7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-service-activation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service-activation.spec.d.ts","sourceRoot":"","sources":["../../src/browser/file-service-activation.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
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
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
17
+ let disableJSDOM = enableJSDOM();
18
+ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
19
+ FrontendApplicationConfigProvider.set({});
20
+ import { Disposable } from '@theia/core';
21
+ import { expect } from 'chai';
22
+ import { FileService } from './file-service.js';
23
+ disableJSDOM();
24
+ function createMockProvider() {
25
+ return {
26
+ capabilities: 1024 /* FileSystemProviderCapabilities.PathCaseSensitive */,
27
+ onDidChangeCapabilities: () => Disposable.NULL,
28
+ onDidChangeFile: () => Disposable.NULL,
29
+ onFileWatchError: () => Disposable.NULL,
30
+ watch: (_resource, _options) => Disposable.NULL,
31
+ stat: () => { throw new Error('not implemented'); },
32
+ readdir: () => { throw new Error('not implemented'); },
33
+ readFile: () => { throw new Error('not implemented'); },
34
+ writeFile: () => { throw new Error('not implemented'); },
35
+ delete: () => { throw new Error('not implemented'); },
36
+ mkdir: () => { throw new Error('not implemented'); },
37
+ rename: () => { throw new Error('not implemented'); },
38
+ };
39
+ }
40
+ /** Resolve to the given value, or to `'PENDING'` if `promise` does not settle within `millis`. */
41
+ function withinTimeout(promise, millis = 200) {
42
+ return Promise.race([
43
+ promise,
44
+ new Promise(resolve => setTimeout(() => resolve('PENDING'), millis))
45
+ ]);
46
+ }
47
+ describe('FileService activateProvider resilience (#17506)', () => {
48
+ before(() => {
49
+ disableJSDOM = enableJSDOM();
50
+ });
51
+ after(() => {
52
+ disableJSDOM();
53
+ });
54
+ it('resolves a pending activation once a provider is registered, even if an onWillActivate listener never settles', async () => {
55
+ const fileService = new FileService();
56
+ const scheme = 'user-storage';
57
+ const provider = createMockProvider();
58
+ // Reproduce the real-world hang: an `onWillActivateFileSystemProvider` listener whose
59
+ // `waitUntil` promise never settles. In the wild this happens when an awaited dependency
60
+ // inside the listener (e.g. a lost RPC reply, or a detached microtask in `createProvider`)
61
+ // never resolves, leaving `WaitUntilEvent.fire`'s `Promise.all(waitables)` pending forever.
62
+ fileService.onWillActivateFileSystemProvider(event => {
63
+ if (event.scheme === scheme) {
64
+ event.waitUntil(new Promise(() => { }));
65
+ }
66
+ });
67
+ const activation = fileService.activateProvider(scheme);
68
+ // The provider does become available (as the reporter demonstrated by registering it
69
+ // manually against the live, hung frontend container).
70
+ fileService.registerProvider(scheme, provider);
71
+ // Before the fix: `activateProvider` is coupled to the settlement of every listener's
72
+ // `waitUntil` promise, so the dangling listener wedges the activation permanently and
73
+ // this resolves to 'PENDING'. After the fix: registering the provider resolves the
74
+ // pending activation immediately.
75
+ const resolved = await withinTimeout(activation);
76
+ expect(resolved).to.equal(provider);
77
+ });
78
+ });
79
+ //# sourceMappingURL=file-service-activation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service-activation.spec.js","sourceRoot":"","sources":["../../src/browser/file-service-activation.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-service-copy.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service-copy.spec.d.ts","sourceRoot":"","sources":["../../src/browser/file-service-copy.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 Sahil Gupta 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
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
17
+ let disableJSDOM = enableJSDOM();
18
+ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
19
+ FrontendApplicationConfigProvider.set({});
20
+ import { Disposable, URI } from '@theia/core';
21
+ import { expect } from 'chai';
22
+ import * as sinon from 'sinon';
23
+ import { FileService } from './file-service.js';
24
+ disableJSDOM();
25
+ function createMockProvider(caseSensitive) {
26
+ return {
27
+ capabilities: caseSensitive ? 1024 /* FileSystemProviderCapabilities.PathCaseSensitive */ : 0,
28
+ onDidChangeCapabilities: () => Disposable.NULL,
29
+ onDidChangeFile: () => Disposable.NULL,
30
+ onFileWatchError: () => Disposable.NULL,
31
+ watch: () => Disposable.NULL,
32
+ stat: () => { throw new Error('not implemented'); },
33
+ readdir: () => { throw new Error('not implemented'); },
34
+ readFile: () => { throw new Error('not implemented'); },
35
+ writeFile: () => { throw new Error('not implemented'); },
36
+ delete: () => { throw new Error('not implemented'); },
37
+ mkdir: () => { throw new Error('not implemented'); },
38
+ rename: () => { throw new Error('not implemented'); },
39
+ copy: () => { throw new Error('not implemented'); },
40
+ };
41
+ }
42
+ /** Resolve to the rejection reason of the given promise, or to `undefined` if it fulfills. */
43
+ async function rejection(promise) {
44
+ try {
45
+ await promise;
46
+ return undefined;
47
+ }
48
+ catch (error) {
49
+ return error;
50
+ }
51
+ }
52
+ describe('FileService move/copy validation', () => {
53
+ const sandbox = sinon.createSandbox();
54
+ let fileService;
55
+ let provider;
56
+ let existsStub;
57
+ before(() => {
58
+ disableJSDOM = enableJSDOM();
59
+ });
60
+ after(() => {
61
+ disableJSDOM();
62
+ });
63
+ afterEach(() => {
64
+ sandbox.restore();
65
+ });
66
+ /** Create a `FileService` backed by a single mock provider for both source and target. */
67
+ function setup(caseSensitive = true) {
68
+ sandbox.restore();
69
+ fileService = new FileService();
70
+ provider = createMockProvider(caseSensitive);
71
+ /* eslint-disable @typescript-eslint/no-explicit-any */
72
+ sandbox.stub(fileService, 'withProvider').resolves(provider);
73
+ sandbox.stub(fileService, 'withReadProvider').resolves(provider);
74
+ sandbox.stub(fileService, 'withWriteProvider').resolves(provider);
75
+ // The error messages name the involved resources through the label provider.
76
+ fileService.labelProvider = { getLongName: (resource) => resource.path.toString() };
77
+ /* eslint-enable @typescript-eslint/no-explicit-any */
78
+ // By default the target does not exist yet, which is the case when pasting a folder into one of its own subfolders.
79
+ existsStub = sandbox.stub(fileService, 'exists').resolves(false);
80
+ }
81
+ function validate(source, target, mode) {
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ return fileService.doValidateMoveCopy(provider, new URI(source), provider, new URI(target), mode, false);
84
+ }
85
+ describe('source containing the target', () => {
86
+ it('should reject copying a folder into a subfolder of itself', async () => {
87
+ setup();
88
+ const error = await rejection(validate('file:///a', 'file:///a/b/a', 'copy'));
89
+ expect(error, 'copying a folder into its own subfolder was allowed').to.be.an.instanceOf(Error);
90
+ expect(error.message).to.contain('is parent of target');
91
+ });
92
+ it('should reject moving a folder into a subfolder of itself', async () => {
93
+ setup();
94
+ const error = await rejection(validate('file:///a', 'file:///a/b', 'move'));
95
+ expect(error, 'moving a folder into its own subfolder was allowed').to.be.an.instanceOf(Error);
96
+ expect(error.message).to.contain('is parent of target');
97
+ });
98
+ it('should reject a deeply nested target inside the source', async () => {
99
+ setup();
100
+ const error = await rejection(validate('file:///a', 'file:///a/b/c/d/a', 'copy'));
101
+ expect(error, 'copying a folder deep into its own subtree was allowed').to.be.an.instanceOf(Error);
102
+ expect(error.message).to.contain('is parent of target');
103
+ });
104
+ it('should reject copying a folder into its own subfolder through FileService.copy', async () => {
105
+ setup();
106
+ const error = await rejection(fileService.copy(new URI('file:///a'), new URI('file:///a/b/a'), { fromUserGesture: false }));
107
+ expect(error, 'FileService.copy allowed a copy into the source subtree').to.be.an.instanceOf(Error);
108
+ expect(error.message).to.contain('is parent of target');
109
+ });
110
+ it('should reject moving a folder into its own subfolder through FileService.move', async () => {
111
+ setup();
112
+ const error = await rejection(fileService.move(new URI('file:///a'), new URI('file:///a/b'), { fromUserGesture: false }));
113
+ expect(error, 'FileService.move allowed a move into the source subtree').to.be.an.instanceOf(Error);
114
+ expect(error.message).to.contain('is parent of target');
115
+ });
116
+ it('should reject a target inside the source that only differs in case on a case-insensitive provider', async () => {
117
+ setup(false);
118
+ const error = await rejection(validate('file:///a', 'file:///A/b/a', 'copy'));
119
+ expect(error, 'a case-insensitive provider allowed a copy into the source subtree').to.be.an.instanceOf(Error);
120
+ expect(error.message).to.contain('is parent of target');
121
+ });
122
+ });
123
+ describe('the same resource', () => {
124
+ it('should reject copying a resource onto itself', async () => {
125
+ setup();
126
+ const error = await rejection(validate('file:///a/b', 'file:///a/b', 'copy'));
127
+ expect(error, 'copying a resource onto itself was allowed').to.be.an.instanceOf(Error);
128
+ expect(error.message).to.contain('is parent of target');
129
+ });
130
+ it('should reject moving a resource onto itself', async () => {
131
+ setup();
132
+ const error = await rejection(validate('file:///a/b', 'file:///a/b', 'move'));
133
+ expect(error, 'moving a resource onto itself was allowed').to.be.an.instanceOf(Error);
134
+ expect(error.message).to.contain('is parent of target');
135
+ });
136
+ });
137
+ describe('unrelated and adjacent targets', () => {
138
+ it('should accept an unrelated target', async () => {
139
+ setup();
140
+ const result = await validate('file:///a', 'file:///c/a', 'copy');
141
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
142
+ });
143
+ it('should accept a target whose path merely shares a prefix with the source', async () => {
144
+ setup();
145
+ const result = await validate('file:///a', 'file:///ab/a', 'copy');
146
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
147
+ });
148
+ it('should accept a target in a different file system', async () => {
149
+ setup();
150
+ const result = await validate('file:///a', 'memory:///a/b/a', 'copy');
151
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
152
+ });
153
+ });
154
+ describe('the target containing the source', () => {
155
+ it('should reject moving a resource onto the existing folder that contains it', async () => {
156
+ setup();
157
+ existsStub.resolves(true);
158
+ const error = await rejection(validate('file:///a/b', 'file:///a', 'move'));
159
+ expect(error, 'moving a resource onto its own parent folder was allowed').to.be.an.instanceOf(Error);
160
+ expect(error.message).to.contain('would replace the folder it is contained in');
161
+ });
162
+ });
163
+ describe('case-only renames on a case-insensitive provider', () => {
164
+ it('should accept a case-only rename', async () => {
165
+ setup(false);
166
+ const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
167
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: true });
168
+ });
169
+ it('should accept a case-only rename of a nested resource', async () => {
170
+ setup(false);
171
+ const result = await validate('file:///a/b/Foo.ts', 'file:///a/b/foo.ts', 'move');
172
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: true });
173
+ });
174
+ it('should accept a case-only rename even when the target is reported as existing', async () => {
175
+ setup(false);
176
+ existsStub.resolves(true);
177
+ const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
178
+ expect(result).to.deep.equal({ exists: true, isSameResourceWithDifferentPathCase: true });
179
+ });
180
+ it('should reject a case-only copy', async () => {
181
+ setup(false);
182
+ const error = await rejection(validate('file:///a/Foo', 'file:///a/foo', 'copy'));
183
+ expect(error, 'a case-only copy was allowed').to.be.an.instanceOf(Error);
184
+ expect(error.message).to.contain('is parent of target');
185
+ });
186
+ it('should accept a case-only rename on a case-sensitive provider as a distinct resource', async () => {
187
+ setup(true);
188
+ const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
189
+ expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
190
+ });
191
+ });
192
+ });
193
+ //# sourceMappingURL=file-service-copy.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-service-copy.spec.js","sourceRoot":"","sources":["../../src/browser/file-service-copy.spec.ts"],"names":[],"mappings":"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"}