@theia/filesystem 1.77.0-next.0 → 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.
- package/lib/browser/breadcrumbs/filepath-breadcrumb.js +4 -8
- package/lib/browser/breadcrumbs/filepath-breadcrumb.js.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js +18 -25
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts +5 -5
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js +27 -33
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js.map +1 -1
- package/lib/browser/download/file-download-command-contribution.d.ts +1 -1
- package/lib/browser/download/file-download-command-contribution.d.ts.map +1 -1
- package/lib/browser/download/file-download-command-contribution.js +28 -33
- package/lib/browser/download/file-download-command-contribution.js.map +1 -1
- package/lib/browser/download/file-download-frontend-module.js +8 -10
- package/lib/browser/download/file-download-frontend-module.js.map +1 -1
- package/lib/browser/download/file-download-service.d.ts +1 -1
- package/lib/browser/download/file-download-service.d.ts.map +1 -1
- package/lib/browser/download/file-download-service.js +19 -25
- package/lib/browser/download/file-download-service.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-container.d.ts +1 -1
- package/lib/browser/file-dialog/file-dialog-container.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-container.js +25 -30
- package/lib/browser/file-dialog/file-dialog-container.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js +13 -21
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-model.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-model.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-model.js +20 -27
- package/lib/browser/file-dialog/file-dialog-model.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-module.js +21 -23
- package/lib/browser/file-dialog/file-dialog-module.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-service.d.ts +4 -4
- package/lib/browser/file-dialog/file-dialog-service.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-service.js +29 -38
- package/lib/browser/file-dialog/file-dialog-service.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts +3 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js +17 -22
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts +2 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts.map +1 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js +35 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js.map +1 -0
- package/lib/browser/file-dialog/file-dialog-tree.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-tree.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree.js +8 -11
- package/lib/browser/file-dialog/file-dialog-tree.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-widget.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-widget.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-widget.js +18 -23
- package/lib/browser/file-dialog/file-dialog-widget.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog.d.ts +11 -6
- package/lib/browser/file-dialog/file-dialog.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog.js +109 -126
- package/lib/browser/file-dialog/file-dialog.js.map +1 -1
- package/lib/browser/file-dialog/index.d.ts +4 -4
- package/lib/browser/file-dialog/index.d.ts.map +1 -1
- package/lib/browser/file-dialog/index.js +4 -7
- package/lib/browser/file-dialog/index.js.map +1 -1
- package/lib/browser/file-resource.d.ts +2 -2
- package/lib/browser/file-resource.d.ts.map +1 -1
- package/lib/browser/file-resource.js +64 -71
- package/lib/browser/file-resource.js.map +1 -1
- package/lib/browser/file-resource.spec.js +39 -41
- package/lib/browser/file-resource.spec.js.map +1 -1
- package/lib/browser/file-selection.d.ts +1 -1
- package/lib/browser/file-selection.d.ts.map +1 -1
- package/lib/browser/file-selection.js +7 -10
- package/lib/browser/file-selection.js.map +1 -1
- package/lib/browser/file-service-activation.spec.d.ts +2 -0
- package/lib/browser/file-service-activation.spec.d.ts.map +1 -0
- package/lib/browser/file-service-activation.spec.js +79 -0
- package/lib/browser/file-service-activation.spec.js.map +1 -0
- package/lib/browser/file-service-copy.spec.d.ts +2 -0
- package/lib/browser/file-service-copy.spec.d.ts.map +1 -0
- package/lib/browser/file-service-copy.spec.js +193 -0
- package/lib/browser/file-service-copy.spec.js.map +1 -0
- package/lib/browser/file-service-watcher.spec.js +199 -201
- package/lib/browser/file-service-watcher.spec.js.map +1 -1
- package/lib/browser/file-service.d.ts +4 -4
- package/lib/browser/file-service.d.ts.map +1 -1
- package/lib/browser/file-service.js +179 -182
- package/lib/browser/file-service.js.map +1 -1
- package/lib/browser/file-tree/file-tree-container.js +12 -15
- package/lib/browser/file-tree/file-tree-container.js.map +1 -1
- package/lib/browser/file-tree/file-tree-decorator-adapter.js +23 -31
- package/lib/browser/file-tree/file-tree-decorator-adapter.js.map +1 -1
- package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js +26 -28
- package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js.map +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.d.ts +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.js +13 -18
- package/lib/browser/file-tree/file-tree-label-provider.js.map +1 -1
- package/lib/browser/file-tree/file-tree-model.d.ts +4 -4
- package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-model.js +42 -52
- package/lib/browser/file-tree/file-tree-model.js.map +1 -1
- package/lib/browser/file-tree/file-tree-widget.d.ts +3 -3
- package/lib/browser/file-tree/file-tree-widget.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-widget.js +63 -71
- package/lib/browser/file-tree/file-tree-widget.js.map +1 -1
- package/lib/browser/file-tree/file-tree.d.ts +3 -3
- package/lib/browser/file-tree/file-tree.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree.js +26 -31
- package/lib/browser/file-tree/file-tree.js.map +1 -1
- package/lib/browser/file-tree/index.d.ts +6 -6
- package/lib/browser/file-tree/index.d.ts.map +1 -1
- package/lib/browser/file-tree/index.js +6 -9
- package/lib/browser/file-tree/index.js.map +1 -1
- package/lib/browser/filesystem-frontend-contribution.d.ts +6 -6
- package/lib/browser/filesystem-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/filesystem-frontend-contribution.js +75 -90
- package/lib/browser/filesystem-frontend-contribution.js.map +1 -1
- package/lib/browser/filesystem-frontend-module.js +47 -50
- package/lib/browser/filesystem-frontend-module.js.map +1 -1
- package/lib/browser/filesystem-saveable-service.d.ts +2 -2
- package/lib/browser/filesystem-saveable-service.d.ts.map +1 -1
- package/lib/browser/filesystem-saveable-service.js +35 -44
- package/lib/browser/filesystem-saveable-service.js.map +1 -1
- package/lib/browser/filesystem-watcher-error-handler.js +13 -18
- package/lib/browser/filesystem-watcher-error-handler.js.map +1 -1
- package/lib/browser/index.d.ts +4 -4
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +4 -7
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/location/index.d.ts +2 -2
- package/lib/browser/location/index.d.ts.map +1 -1
- package/lib/browser/location/index.js +2 -5
- package/lib/browser/location/index.js.map +1 -1
- package/lib/browser/location/location-renderer.d.ts +3 -3
- package/lib/browser/location/location-renderer.d.ts.map +1 -1
- package/lib/browser/location/location-renderer.js +42 -51
- package/lib/browser/location/location-renderer.js.map +1 -1
- package/lib/browser/location/location-renderer.spec.js +61 -63
- package/lib/browser/location/location-renderer.spec.js.map +1 -1
- package/lib/browser/location/location-service.js +1 -2
- package/lib/browser/location/location-service.js.map +1 -1
- package/lib/browser/remote-file-service-contribution.d.ts +2 -2
- package/lib/browser/remote-file-service-contribution.d.ts.map +1 -1
- package/lib/browser/remote-file-service-contribution.js +8 -12
- package/lib/browser/remote-file-service-contribution.js.map +1 -1
- package/lib/browser/upload/file-upload-service-impl.d.ts +3 -3
- package/lib/browser/upload/file-upload-service-impl.d.ts.map +1 -1
- package/lib/browser/upload/file-upload-service-impl.js +55 -64
- package/lib/browser/upload/file-upload-service-impl.js.map +1 -1
- package/lib/browser/vscode-file-service-contribution.d.ts +2 -2
- package/lib/browser/vscode-file-service-contribution.d.ts.map +1 -1
- package/lib/browser/vscode-file-service-contribution.js +23 -28
- package/lib/browser/vscode-file-service-contribution.js.map +1 -1
- package/lib/browser-only/browser-only-filesystem-frontend-module.js +21 -23
- package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.d.ts +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.d.ts.map +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.js +10 -13
- package/lib/browser-only/browser-only-filesystem-provider-server.js.map +1 -1
- package/lib/browser-only/download/file-download-command-contribution.d.ts +1 -1
- package/lib/browser-only/download/file-download-command-contribution.d.ts.map +1 -1
- package/lib/browser-only/download/file-download-command-contribution.js +14 -19
- package/lib/browser-only/download/file-download-command-contribution.js.map +1 -1
- package/lib/browser-only/download/file-download-frontend-module.js +8 -10
- package/lib/browser-only/download/file-download-frontend-module.js.map +1 -1
- package/lib/browser-only/download/file-download-service.d.ts +3 -3
- package/lib/browser-only/download/file-download-service.d.ts.map +1 -1
- package/lib/browser-only/download/file-download-service.js +26 -33
- package/lib/browser-only/download/file-download-service.js.map +1 -1
- package/lib/browser-only/file-search.d.ts.map +1 -1
- package/lib/browser-only/file-search.js +9 -14
- package/lib/browser-only/file-search.js.map +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.d.ts +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.js +6 -9
- package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -1
- package/lib/browser-only/opfs-filesystem-provider.d.ts +2 -2
- package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -1
- package/lib/browser-only/opfs-filesystem-provider.js +60 -68
- package/lib/browser-only/opfs-filesystem-provider.js.map +1 -1
- package/lib/browser-only/upload/file-upload-service-impl.d.ts +3 -3
- package/lib/browser-only/upload/file-upload-service-impl.d.ts.map +1 -1
- package/lib/browser-only/upload/file-upload-service-impl.js +51 -60
- package/lib/browser-only/upload/file-upload-service-impl.js.map +1 -1
- package/lib/common/delegating-file-system-provider.d.ts +1 -1
- package/lib/common/delegating-file-system-provider.d.ts.map +1 -1
- package/lib/common/delegating-file-system-provider.js +18 -22
- package/lib/common/delegating-file-system-provider.js.map +1 -1
- package/lib/common/download/file-download.js +5 -8
- package/lib/common/download/file-download.js.map +1 -1
- package/lib/common/file-upload.js +1 -4
- package/lib/common/file-upload.js.map +1 -1
- package/lib/common/files.js +38 -58
- package/lib/common/files.js.map +1 -1
- package/lib/common/files.spec.js +22 -24
- package/lib/common/files.spec.js.map +1 -1
- package/lib/common/filesystem-preferences.js +39 -44
- package/lib/common/filesystem-preferences.js.map +1 -1
- package/lib/common/filesystem-utils.d.ts +1 -1
- package/lib/common/filesystem-utils.d.ts.map +1 -1
- package/lib/common/filesystem-utils.js +2 -5
- package/lib/common/filesystem-utils.js.map +1 -1
- package/lib/common/filesystem-utils.spec.js +227 -229
- package/lib/common/filesystem-utils.spec.js.map +1 -1
- package/lib/common/filesystem-watcher-protocol.d.ts +5 -1
- package/lib/common/filesystem-watcher-protocol.d.ts.map +1 -1
- package/lib/common/filesystem-watcher-protocol.js +2 -5
- package/lib/common/filesystem-watcher-protocol.js.map +1 -1
- package/lib/common/filesystem.js +2 -5
- package/lib/common/filesystem.js.map +1 -1
- package/lib/common/index.d.ts +3 -3
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +3 -6
- package/lib/common/index.js.map +1 -1
- package/lib/common/io.d.ts +2 -2
- package/lib/common/io.d.ts.map +1 -1
- package/lib/common/io.js +10 -13
- package/lib/common/io.js.map +1 -1
- package/lib/common/remote-file-system-provider.d.ts +1 -1
- package/lib/common/remote-file-system-provider.d.ts.map +1 -1
- package/lib/common/remote-file-system-provider.js +81 -93
- package/lib/common/remote-file-system-provider.js.map +1 -1
- package/lib/common/upload/file-upload.js +1 -4
- package/lib/common/upload/file-upload.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-module.js +6 -8
- package/lib/electron-browser/file-dialog/electron-file-dialog-module.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts +3 -3
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js +20 -24
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts +2 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts.map +1 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js +46 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js.map +1 -0
- package/lib/electron-browser/preload.js +6 -9
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-common/electron-api.js +2 -5
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.js +15 -18
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-module.js +6 -8
- package/lib/electron-main/electron-main-module.js.map +1 -1
- package/lib/node/disk-file-system-provider.d.ts +2 -2
- package/lib/node/disk-file-system-provider.d.ts.map +1 -1
- package/lib/node/disk-file-system-provider.js +116 -121
- package/lib/node/disk-file-system-provider.js.map +1 -1
- package/lib/node/disk-file-system-provider.spec.js +77 -54
- package/lib/node/disk-file-system-provider.spec.js.map +1 -1
- package/lib/node/download/directory-archiver.js +13 -16
- package/lib/node/download/directory-archiver.js.map +1 -1
- package/lib/node/download/directory-archiver.spec.js +20 -22
- package/lib/node/download/directory-archiver.spec.js.map +1 -1
- package/lib/node/download/file-download-backend-module.js +14 -16
- package/lib/node/download/file-download-backend-module.js.map +1 -1
- package/lib/node/download/file-download-cache.js +12 -16
- package/lib/node/download/file-download-cache.js.map +1 -1
- package/lib/node/download/file-download-endpoint.d.ts +1 -1
- package/lib/node/download/file-download-endpoint.d.ts.map +1 -1
- package/lib/node/download/file-download-endpoint.js +25 -31
- package/lib/node/download/file-download-endpoint.js.map +1 -1
- package/lib/node/download/file-download-handler.d.ts +2 -2
- package/lib/node/download/file-download-handler.d.ts.map +1 -1
- package/lib/node/download/file-download-handler.js +70 -77
- package/lib/node/download/file-download-handler.js.map +1 -1
- package/lib/node/download/test/mock-directory-archiver.d.ts +1 -1
- package/lib/node/download/test/mock-directory-archiver.d.ts.map +1 -1
- package/lib/node/download/test/mock-directory-archiver.js +2 -6
- package/lib/node/download/test/mock-directory-archiver.js.map +1 -1
- package/lib/node/file-change-collection.d.ts +1 -1
- package/lib/node/file-change-collection.d.ts.map +1 -1
- package/lib/node/file-change-collection.js +1 -5
- package/lib/node/file-change-collection.js.map +1 -1
- package/lib/node/file-change-collection.spec.js +5 -7
- package/lib/node/file-change-collection.spec.js.map +1 -1
- package/lib/node/filesystem-backend-module.d.ts +3 -3
- package/lib/node/filesystem-backend-module.d.ts.map +1 -1
- package/lib/node/filesystem-backend-module.js +57 -62
- package/lib/node/filesystem-backend-module.js.map +1 -1
- package/lib/node/filesystem-watcher-client.d.ts +2 -2
- package/lib/node/filesystem-watcher-client.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-client.js +11 -16
- package/lib/node/filesystem-watcher-client.js.map +1 -1
- package/lib/node/filesystem-watcher-dispatcher.d.ts +1 -1
- package/lib/node/filesystem-watcher-dispatcher.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-dispatcher.js +9 -13
- package/lib/node/filesystem-watcher-dispatcher.js.map +1 -1
- package/lib/node/filesystem-watcher-service-impl.d.ts +30 -0
- package/lib/node/filesystem-watcher-service-impl.d.ts.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.js +88 -0
- package/lib/node/filesystem-watcher-service-impl.js.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.spec.d.ts +2 -0
- package/lib/node/filesystem-watcher-service-impl.spec.d.ts.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.spec.js +199 -0
- package/lib/node/filesystem-watcher-service-impl.spec.js.map +1 -0
- package/lib/node/filesystem-watcher.d.ts +93 -0
- package/lib/node/filesystem-watcher.d.ts.map +1 -0
- package/lib/node/filesystem-watcher.js +129 -0
- package/lib/node/filesystem-watcher.js.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts +175 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.js +574 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.js.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts +2 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js +1281 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js.map +1 -0
- package/lib/node/nodejs-watcher/watch-request-router.d.ts +63 -0
- package/lib/node/nodejs-watcher/watch-request-router.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/watch-request-router.js +178 -0
- package/lib/node/nodejs-watcher/watch-request-router.js.map +1 -0
- package/lib/node/nodejs-watcher/watcher-host.d.ts +50 -0
- package/lib/node/nodejs-watcher/watcher-host.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/watcher-host.js +94 -0
- package/lib/node/nodejs-watcher/watcher-host.js.map +1 -0
- package/lib/node/parcel-watcher/index.js +6 -8
- package/lib/node/parcel-watcher/index.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts +14 -194
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.js +5 -426
- package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js +23 -25
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-options.js +1 -4
- package/lib/node/parcel-watcher/parcel-options.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js +12 -16
- package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js +11 -15
- package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher.d.ts +165 -0
- package/lib/node/parcel-watcher/parcel-watcher.d.ts.map +1 -0
- package/lib/node/parcel-watcher/parcel-watcher.js +366 -0
- package/lib/node/parcel-watcher/parcel-watcher.js.map +1 -0
- package/lib/node/test/watcher-test-helper.d.ts +21 -0
- package/lib/node/test/watcher-test-helper.d.ts.map +1 -0
- package/lib/node/test/watcher-test-helper.js +51 -0
- package/lib/node/test/watcher-test-helper.js.map +1 -0
- package/lib/node/upload/node-file-upload-service.d.ts +1 -1
- package/lib/node/upload/node-file-upload-service.d.ts.map +1 -1
- package/lib/node/upload/node-file-upload-service.js +20 -25
- package/lib/node/upload/node-file-upload-service.js.map +1 -1
- package/lib/node/upload/node-file-upload-service.spec.js +21 -23
- package/lib/node/upload/node-file-upload-service.spec.js.map +1 -1
- package/package.json +21 -7
- package/src/browser/breadcrumbs/filepath-breadcrumb.ts +1 -1
- package/src/browser/breadcrumbs/filepath-breadcrumbs-container.ts +1 -1
- package/src/browser/breadcrumbs/filepath-breadcrumbs-contribution.ts +5 -5
- package/src/browser/download/file-download-command-contribution.ts +1 -1
- package/src/browser/download/file-download-frontend-module.ts +3 -3
- package/src/browser/download/file-download-service.ts +1 -2
- package/src/browser/file-dialog/file-dialog-container.ts +5 -5
- package/src/browser/file-dialog/file-dialog-hidden-files-renderer.tsx +1 -1
- package/src/browser/file-dialog/file-dialog-model.ts +2 -2
- package/src/browser/file-dialog/file-dialog-module.ts +5 -5
- package/src/browser/file-dialog/file-dialog-service.ts +4 -4
- package/src/browser/file-dialog/file-dialog-tree-filters-renderer.spec.ts +43 -0
- package/src/browser/file-dialog/file-dialog-tree-filters-renderer.tsx +4 -2
- package/src/browser/file-dialog/file-dialog-tree.ts +2 -2
- package/src/browser/file-dialog/file-dialog-widget.ts +2 -2
- package/src/browser/file-dialog/file-dialog.ts +17 -7
- package/src/browser/file-dialog/index.ts +4 -4
- package/src/browser/file-resource.spec.ts +3 -3
- package/src/browser/file-resource.ts +3 -3
- package/src/browser/file-selection.ts +1 -1
- package/src/browser/file-service-activation.spec.ts +93 -0
- package/src/browser/file-service-copy.spec.ts +226 -0
- package/src/browser/file-service-watcher.spec.ts +2 -2
- package/src/browser/file-service.ts +22 -11
- package/src/browser/file-tree/file-tree-container.ts +3 -3
- package/src/browser/file-tree/file-tree-decorator-adapter.spec.ts +1 -1
- package/src/browser/file-tree/file-tree-decorator-adapter.ts +1 -1
- package/src/browser/file-tree/file-tree-label-provider.ts +1 -1
- package/src/browser/file-tree/file-tree-model.ts +5 -5
- package/src/browser/file-tree/file-tree-widget.tsx +4 -4
- package/src/browser/file-tree/file-tree.ts +3 -3
- package/src/browser/file-tree/index.ts +6 -6
- package/src/browser/filesystem-frontend-contribution.ts +6 -6
- package/src/browser/filesystem-frontend-module.ts +14 -14
- package/src/browser/filesystem-saveable-service.ts +2 -2
- package/src/browser/index.ts +4 -4
- package/src/browser/location/index.ts +2 -2
- package/src/browser/location/location-renderer.spec.ts +3 -3
- package/src/browser/location/location-renderer.tsx +3 -3
- package/src/browser/remote-file-service-contribution.ts +2 -2
- package/src/browser/upload/file-upload-service-impl.ts +5 -5
- package/src/browser/vscode-file-service-contribution.ts +2 -2
- package/src/browser-only/browser-only-filesystem-frontend-module.ts +7 -7
- package/src/browser-only/browser-only-filesystem-provider-server.ts +1 -1
- package/src/browser-only/download/file-download-command-contribution.ts +2 -2
- package/src/browser-only/download/file-download-frontend-module.ts +3 -3
- package/src/browser-only/download/file-download-service.ts +3 -3
- package/src/browser-only/file-search.ts +2 -1
- package/src/browser-only/opfs-filesystem-initialization.ts +1 -1
- package/src/browser-only/opfs-filesystem-provider.ts +3 -3
- package/src/browser-only/upload/file-upload-service-impl.ts +4 -4
- package/src/common/delegating-file-system-provider.ts +1 -1
- package/src/common/files.spec.ts +1 -1
- package/src/common/filesystem-utils.spec.ts +2 -2
- package/src/common/filesystem-utils.ts +1 -1
- package/src/common/filesystem-watcher-protocol.ts +5 -1
- package/src/common/index.ts +3 -3
- package/src/common/io.ts +2 -2
- package/src/common/remote-file-system-provider.ts +1 -1
- package/src/electron-browser/file-dialog/electron-file-dialog-module.ts +2 -2
- package/src/electron-browser/file-dialog/electron-file-dialog-service.spec.ts +57 -0
- package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +5 -5
- package/src/electron-browser/preload.ts +1 -1
- package/src/electron-main/electron-api-main.ts +1 -1
- package/src/electron-main/electron-main-module.ts +1 -1
- package/src/node/disk-file-system-provider.spec.ts +32 -3
- package/src/node/disk-file-system-provider.ts +12 -8
- package/src/node/download/directory-archiver.spec.ts +1 -1
- package/src/node/download/file-download-backend-module.ts +4 -4
- package/src/node/download/file-download-cache.ts +1 -1
- package/src/node/download/file-download-endpoint.ts +4 -3
- package/src/node/download/file-download-handler.ts +3 -4
- package/src/node/download/test/mock-directory-archiver.ts +1 -1
- package/src/node/file-change-collection.spec.ts +2 -2
- package/src/node/file-change-collection.ts +1 -1
- package/src/node/filesystem-backend-module.ts +15 -14
- package/src/node/filesystem-watcher-client.ts +2 -2
- package/src/node/filesystem-watcher-dispatcher.ts +1 -1
- package/src/node/filesystem-watcher-service-impl.spec.ts +272 -0
- package/src/node/filesystem-watcher-service-impl.ts +109 -0
- package/src/node/filesystem-watcher.ts +197 -0
- package/src/node/nodejs-watcher/node-directory-watcher.spec.ts +1594 -0
- package/src/node/nodejs-watcher/node-directory-watcher.ts +664 -0
- package/src/node/nodejs-watcher/watch-request-router.ts +224 -0
- package/src/node/nodejs-watcher/watcher-host.ts +126 -0
- package/src/node/parcel-watcher/index.ts +3 -3
- package/src/node/parcel-watcher/parcel-filesystem-service.ts +14 -500
- package/src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts +5 -5
- package/src/node/parcel-watcher/parcel-watcher-exclude.spec.ts +7 -11
- package/src/node/parcel-watcher/parcel-watcher-retry.spec.ts +6 -8
- package/src/node/parcel-watcher/parcel-watcher.ts +433 -0
- package/src/node/test/watcher-test-helper.ts +58 -0
- package/src/node/upload/node-file-upload-service.spec.ts +1 -1
- 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":"
|
|
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 @@
|
|
|
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 @@
|
|
|
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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"}
|