@theia/filesystem 1.77.0-next.1 → 1.77.0-next.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +5 -5
- package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-model.js +48 -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 +66 -72
- 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 +12 -6
- package/src/browser/file-tree/file-tree-widget.tsx +8 -5
- 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
|
@@ -0,0 +1,226 @@
|
|
|
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
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
|
|
20
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
21
|
+
FrontendApplicationConfigProvider.set({});
|
|
22
|
+
|
|
23
|
+
import { Disposable, URI } from '@theia/core';
|
|
24
|
+
import { expect } from 'chai';
|
|
25
|
+
import * as sinon from 'sinon';
|
|
26
|
+
import { FileSystemProvider, FileSystemProviderCapabilities } from '../common/files.js';
|
|
27
|
+
import { FileService } from './file-service.js';
|
|
28
|
+
|
|
29
|
+
disableJSDOM();
|
|
30
|
+
|
|
31
|
+
function createMockProvider(caseSensitive: boolean): FileSystemProvider {
|
|
32
|
+
return {
|
|
33
|
+
capabilities: caseSensitive ? FileSystemProviderCapabilities.PathCaseSensitive : 0,
|
|
34
|
+
onDidChangeCapabilities: () => Disposable.NULL,
|
|
35
|
+
onDidChangeFile: () => Disposable.NULL,
|
|
36
|
+
onFileWatchError: () => Disposable.NULL,
|
|
37
|
+
watch: () => Disposable.NULL,
|
|
38
|
+
stat: () => { throw new Error('not implemented'); },
|
|
39
|
+
readdir: () => { throw new Error('not implemented'); },
|
|
40
|
+
readFile: () => { throw new Error('not implemented'); },
|
|
41
|
+
writeFile: () => { throw new Error('not implemented'); },
|
|
42
|
+
delete: () => { throw new Error('not implemented'); },
|
|
43
|
+
mkdir: () => { throw new Error('not implemented'); },
|
|
44
|
+
rename: () => { throw new Error('not implemented'); },
|
|
45
|
+
copy: () => { throw new Error('not implemented'); },
|
|
46
|
+
} as unknown as FileSystemProvider;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Resolve to the rejection reason of the given promise, or to `undefined` if it fulfills. */
|
|
50
|
+
async function rejection(promise: Promise<unknown>): Promise<Error | undefined> {
|
|
51
|
+
try {
|
|
52
|
+
await promise;
|
|
53
|
+
return undefined;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
return error as Error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
describe('FileService move/copy validation', () => {
|
|
60
|
+
const sandbox = sinon.createSandbox();
|
|
61
|
+
let fileService: FileService;
|
|
62
|
+
let provider: FileSystemProvider;
|
|
63
|
+
let existsStub: sinon.SinonStub;
|
|
64
|
+
|
|
65
|
+
before(() => {
|
|
66
|
+
disableJSDOM = enableJSDOM();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
after(() => {
|
|
70
|
+
disableJSDOM();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
afterEach(() => {
|
|
74
|
+
sandbox.restore();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/** Create a `FileService` backed by a single mock provider for both source and target. */
|
|
78
|
+
function setup(caseSensitive: boolean = true): void {
|
|
79
|
+
sandbox.restore();
|
|
80
|
+
fileService = new FileService();
|
|
81
|
+
provider = createMockProvider(caseSensitive);
|
|
82
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
83
|
+
sandbox.stub(fileService as any, 'withProvider').resolves(provider);
|
|
84
|
+
sandbox.stub(fileService as any, 'withReadProvider').resolves(provider);
|
|
85
|
+
sandbox.stub(fileService as any, 'withWriteProvider').resolves(provider);
|
|
86
|
+
// The error messages name the involved resources through the label provider.
|
|
87
|
+
(fileService as any).labelProvider = { getLongName: (resource: URI) => resource.path.toString() };
|
|
88
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
89
|
+
// By default the target does not exist yet, which is the case when pasting a folder into one of its own subfolders.
|
|
90
|
+
existsStub = sandbox.stub(fileService, 'exists').resolves(false);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function validate(source: string, target: string, mode: 'move' | 'copy'): Promise<unknown> {
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
+
return (fileService as any).doValidateMoveCopy(provider, new URI(source), provider, new URI(target), mode, false);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
describe('source containing the target', () => {
|
|
99
|
+
|
|
100
|
+
it('should reject copying a folder into a subfolder of itself', async () => {
|
|
101
|
+
setup();
|
|
102
|
+
const error = await rejection(validate('file:///a', 'file:///a/b/a', 'copy'));
|
|
103
|
+
expect(error, 'copying a folder into its own subfolder was allowed').to.be.an.instanceOf(Error);
|
|
104
|
+
expect(error!.message).to.contain('is parent of target');
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('should reject moving a folder into a subfolder of itself', async () => {
|
|
108
|
+
setup();
|
|
109
|
+
const error = await rejection(validate('file:///a', 'file:///a/b', 'move'));
|
|
110
|
+
expect(error, 'moving a folder into its own subfolder was allowed').to.be.an.instanceOf(Error);
|
|
111
|
+
expect(error!.message).to.contain('is parent of target');
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('should reject a deeply nested target inside the source', async () => {
|
|
115
|
+
setup();
|
|
116
|
+
const error = await rejection(validate('file:///a', 'file:///a/b/c/d/a', 'copy'));
|
|
117
|
+
expect(error, 'copying a folder deep into its own subtree was allowed').to.be.an.instanceOf(Error);
|
|
118
|
+
expect(error!.message).to.contain('is parent of target');
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('should reject copying a folder into its own subfolder through FileService.copy', async () => {
|
|
122
|
+
setup();
|
|
123
|
+
const error = await rejection(fileService.copy(new URI('file:///a'), new URI('file:///a/b/a'), { fromUserGesture: false }));
|
|
124
|
+
expect(error, 'FileService.copy allowed a copy into the source subtree').to.be.an.instanceOf(Error);
|
|
125
|
+
expect(error!.message).to.contain('is parent of target');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('should reject moving a folder into its own subfolder through FileService.move', async () => {
|
|
129
|
+
setup();
|
|
130
|
+
const error = await rejection(fileService.move(new URI('file:///a'), new URI('file:///a/b'), { fromUserGesture: false }));
|
|
131
|
+
expect(error, 'FileService.move allowed a move into the source subtree').to.be.an.instanceOf(Error);
|
|
132
|
+
expect(error!.message).to.contain('is parent of target');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('should reject a target inside the source that only differs in case on a case-insensitive provider', async () => {
|
|
136
|
+
setup(false);
|
|
137
|
+
const error = await rejection(validate('file:///a', 'file:///A/b/a', 'copy'));
|
|
138
|
+
expect(error, 'a case-insensitive provider allowed a copy into the source subtree').to.be.an.instanceOf(Error);
|
|
139
|
+
expect(error!.message).to.contain('is parent of target');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
describe('the same resource', () => {
|
|
144
|
+
|
|
145
|
+
it('should reject copying a resource onto itself', async () => {
|
|
146
|
+
setup();
|
|
147
|
+
const error = await rejection(validate('file:///a/b', 'file:///a/b', 'copy'));
|
|
148
|
+
expect(error, 'copying a resource onto itself was allowed').to.be.an.instanceOf(Error);
|
|
149
|
+
expect(error!.message).to.contain('is parent of target');
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('should reject moving a resource onto itself', async () => {
|
|
153
|
+
setup();
|
|
154
|
+
const error = await rejection(validate('file:///a/b', 'file:///a/b', 'move'));
|
|
155
|
+
expect(error, 'moving a resource onto itself was allowed').to.be.an.instanceOf(Error);
|
|
156
|
+
expect(error!.message).to.contain('is parent of target');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
describe('unrelated and adjacent targets', () => {
|
|
161
|
+
|
|
162
|
+
it('should accept an unrelated target', async () => {
|
|
163
|
+
setup();
|
|
164
|
+
const result = await validate('file:///a', 'file:///c/a', 'copy');
|
|
165
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('should accept a target whose path merely shares a prefix with the source', async () => {
|
|
169
|
+
setup();
|
|
170
|
+
const result = await validate('file:///a', 'file:///ab/a', 'copy');
|
|
171
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('should accept a target in a different file system', async () => {
|
|
175
|
+
setup();
|
|
176
|
+
const result = await validate('file:///a', 'memory:///a/b/a', 'copy');
|
|
177
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
describe('the target containing the source', () => {
|
|
182
|
+
|
|
183
|
+
it('should reject moving a resource onto the existing folder that contains it', async () => {
|
|
184
|
+
setup();
|
|
185
|
+
existsStub.resolves(true);
|
|
186
|
+
const error = await rejection(validate('file:///a/b', 'file:///a', 'move'));
|
|
187
|
+
expect(error, 'moving a resource onto its own parent folder was allowed').to.be.an.instanceOf(Error);
|
|
188
|
+
expect(error!.message).to.contain('would replace the folder it is contained in');
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
describe('case-only renames on a case-insensitive provider', () => {
|
|
193
|
+
|
|
194
|
+
it('should accept a case-only rename', async () => {
|
|
195
|
+
setup(false);
|
|
196
|
+
const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
|
|
197
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: true });
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it('should accept a case-only rename of a nested resource', async () => {
|
|
201
|
+
setup(false);
|
|
202
|
+
const result = await validate('file:///a/b/Foo.ts', 'file:///a/b/foo.ts', 'move');
|
|
203
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: true });
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it('should accept a case-only rename even when the target is reported as existing', async () => {
|
|
207
|
+
setup(false);
|
|
208
|
+
existsStub.resolves(true);
|
|
209
|
+
const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
|
|
210
|
+
expect(result).to.deep.equal({ exists: true, isSameResourceWithDifferentPathCase: true });
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it('should reject a case-only copy', async () => {
|
|
214
|
+
setup(false);
|
|
215
|
+
const error = await rejection(validate('file:///a/Foo', 'file:///a/foo', 'copy'));
|
|
216
|
+
expect(error, 'a case-only copy was allowed').to.be.an.instanceOf(Error);
|
|
217
|
+
expect(error!.message).to.contain('is parent of target');
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it('should accept a case-only rename on a case-sensitive provider as a distinct resource', async () => {
|
|
221
|
+
setup(true);
|
|
222
|
+
const result = await validate('file:///a/Foo', 'file:///a/foo', 'move');
|
|
223
|
+
expect(result).to.deep.equal({ exists: false, isSameResourceWithDifferentPathCase: false });
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
@@ -23,8 +23,8 @@ FrontendApplicationConfigProvider.set({});
|
|
|
23
23
|
import { Disposable, Emitter, URI } from '@theia/core';
|
|
24
24
|
import { expect } from 'chai';
|
|
25
25
|
import * as sinon from 'sinon';
|
|
26
|
-
import { FileChange, FileChangeType, FileSystemProvider, FileSystemProviderCapabilities, WatchOptions } from '../common/files';
|
|
27
|
-
import { FileService } from './file-service';
|
|
26
|
+
import { FileChange, FileChangeType, FileSystemProvider, FileSystemProviderCapabilities, WatchOptions } from '../common/files.js';
|
|
27
|
+
import { FileService } from './file-service.js';
|
|
28
28
|
|
|
29
29
|
disableJSDOM();
|
|
30
30
|
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
// and https://github.com/microsoft/vscode/blob/04c36be045a94fee58e5f8992d3e3fd980294a84/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts
|
|
25
25
|
|
|
26
26
|
/* eslint-disable max-len */
|
|
27
|
+
/* eslint-disable @stylistic/brace-style, @stylistic/semi-spacing */
|
|
27
28
|
/* eslint-disable @typescript-eslint/no-shadow */
|
|
28
29
|
/* eslint-disable no-null/no-null */
|
|
29
|
-
/* eslint-disable @typescript-eslint/tslint/config */
|
|
30
30
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
31
31
|
|
|
32
32
|
import { injectable, inject, named, postConstruct } from '@theia/core/shared/inversify';
|
|
@@ -52,22 +52,22 @@ import {
|
|
|
52
52
|
ResolveFileResult, ResolveFileResultWithMetadata,
|
|
53
53
|
MoveFileOptions, CopyFileOptions, BaseStatWithMetadata, FileDeleteOptions, FileOperationOptions, hasAccessCapability, hasUpdateCapability,
|
|
54
54
|
hasFileReadStreamCapability, FileSystemProviderWithFileReadStreamCapability, ReadOnlyMessageFileSystemProvider
|
|
55
|
-
} from '../common/files';
|
|
55
|
+
} from '../common/files.js';
|
|
56
56
|
import { BinaryBuffer, BinaryBufferReadable, BinaryBufferReadableStream, BinaryBufferReadableBufferedStream, BinaryBufferWriteableStream } from '@theia/core/lib/common/buffer';
|
|
57
57
|
import { ReadableStream, isReadableStream, isReadableBufferedStream, transform, consumeStream, peekStream, peekReadable, Readable } from '@theia/core/lib/common/stream';
|
|
58
58
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
59
|
-
import { FileSystemPreferences } from '../common/filesystem-preferences';
|
|
59
|
+
import { FileSystemPreferences } from '../common/filesystem-preferences.js';
|
|
60
60
|
import { ProgressService } from '@theia/core/lib/common/progress-service';
|
|
61
|
-
import { DelegatingFileSystemProvider } from '../common/delegating-file-system-provider';
|
|
61
|
+
import { DelegatingFileSystemProvider } from '../common/delegating-file-system-provider.js';
|
|
62
62
|
import type { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
63
63
|
import { EncodingRegistry } from '@theia/core/lib/browser/encoding-registry';
|
|
64
64
|
import { UTF8, UTF8_with_bom } from '@theia/core/lib/common/encodings';
|
|
65
65
|
import { EncodingService, ResourceEncoding, DecodeStreamResult } from '@theia/core/lib/common/encoding-service';
|
|
66
66
|
import { Minimatch } from 'minimatch';
|
|
67
67
|
import { Mutable } from '@theia/core/lib/common/types';
|
|
68
|
-
import { readFileIntoStream } from '../common/io';
|
|
69
|
-
import { FileSystemWatcherErrorHandler } from './filesystem-watcher-error-handler';
|
|
70
|
-
import { FileSystemUtils } from '../common/filesystem-utils';
|
|
68
|
+
import { readFileIntoStream } from '../common/io.js';
|
|
69
|
+
import { FileSystemWatcherErrorHandler } from './filesystem-watcher-error-handler.js';
|
|
70
|
+
import { FileSystemUtils } from '../common/filesystem-utils.js';
|
|
71
71
|
import { nls, ILogger } from '@theia/core';
|
|
72
72
|
import { MarkdownString } from '@theia/core/lib/common/markdown-rendering';
|
|
73
73
|
|
|
@@ -201,7 +201,7 @@ export const FileServiceContribution = Symbol('FileServiceContribution');
|
|
|
201
201
|
* });
|
|
202
202
|
*
|
|
203
203
|
* }
|
|
204
|
-
|
|
204
|
+
* ```
|
|
205
205
|
*/
|
|
206
206
|
export interface FileServiceContribution {
|
|
207
207
|
/**
|
|
@@ -409,6 +409,15 @@ export class FileService {
|
|
|
409
409
|
if (!activation) {
|
|
410
410
|
const deferredActivation = new Deferred<FileSystemProvider>();
|
|
411
411
|
this.activations.set(scheme, activation = deferredActivation.promise);
|
|
412
|
+
// Resolve the activation as soon as a provider is registered for the scheme. Otherwise a
|
|
413
|
+
// slow or dangling `onWillActivateFileSystemProvider` listener whose `waitUntil` promise
|
|
414
|
+
// never settles would wedge this activation (and everything awaiting it) forever. See #17506.
|
|
415
|
+
const registration = this.onDidChangeFileSystemProviderRegistrations(event => {
|
|
416
|
+
if (event.added && event.scheme === scheme && event.provider) {
|
|
417
|
+
deferredActivation.resolve(event.provider);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
deferredActivation.promise.then(() => registration.dispose(), () => registration.dispose());
|
|
412
421
|
WaitUntilEvent.fire(this.onWillActivateFileSystemProviderEmitter, { scheme }).then(() => {
|
|
413
422
|
provider = this.providers.get(scheme);
|
|
414
423
|
if (!provider) {
|
|
@@ -515,7 +524,7 @@ export class FileService {
|
|
|
515
524
|
*/
|
|
516
525
|
resolve(resource: URI, options: ResolveMetadataFileOptions): Promise<FileStatWithMetadata>;
|
|
517
526
|
resolve(resource: URI, options?: ResolveFileOptions | undefined): Promise<FileStat>;
|
|
518
|
-
async resolve(resource: any, options?: any) {
|
|
527
|
+
async resolve(resource: any, options?: any): Promise<FileStat> {
|
|
519
528
|
try {
|
|
520
529
|
return await this.doResolveFile(resource, options);
|
|
521
530
|
} catch (error) {
|
|
@@ -1282,7 +1291,7 @@ export class FileService {
|
|
|
1282
1291
|
throw new Error(nls.localizeByDefault("Unable to move/copy when source '{0}' is parent of target '{1}'.", this.resourceForError(source), this.resourceForError(target)));
|
|
1283
1292
|
}
|
|
1284
1293
|
|
|
1285
|
-
if (!isSameResourceWithDifferentPathCase &&
|
|
1294
|
+
if (!isSameResourceWithDifferentPathCase && source.isEqualOrParent(target, isPathCaseSensitive)) {
|
|
1286
1295
|
throw new Error(nls.localizeByDefault("Unable to move/copy when source '{0}' is parent of target '{1}'.", this.resourceForError(source), this.resourceForError(target)));
|
|
1287
1296
|
}
|
|
1288
1297
|
}
|
|
@@ -1295,7 +1304,7 @@ export class FileService {
|
|
|
1295
1304
|
// it as it would delete the source as well. In this case we have to throw
|
|
1296
1305
|
if (sourceProvider === targetProvider) {
|
|
1297
1306
|
const isPathCaseSensitive = !!(sourceProvider.capabilities & FileSystemProviderCapabilities.PathCaseSensitive);
|
|
1298
|
-
if (
|
|
1307
|
+
if (target.isEqualOrParent(source, isPathCaseSensitive)) {
|
|
1299
1308
|
throw new Error(nls.localizeByDefault("Unable to move/copy '{0}' into '{1}' since a file would replace the folder it is contained in.", this.resourceForError(source), this.resourceForError(target)));
|
|
1300
1309
|
}
|
|
1301
1310
|
}
|
|
@@ -2107,6 +2116,8 @@ export class FileService {
|
|
|
2107
2116
|
}
|
|
2108
2117
|
} else if (detectedEncoding) {
|
|
2109
2118
|
preferredEncoding = detectedEncoding;
|
|
2119
|
+
} else if (this.preferences.get('files.encoding', undefined, resource.toString()) === UTF8_with_bom) {
|
|
2120
|
+
preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then
|
|
2110
2121
|
}
|
|
2111
2122
|
|
|
2112
2123
|
return this.getEncodingForResource(resource, preferredEncoding);
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
import { interfaces, Container } from '@theia/core/shared/inversify';
|
|
18
18
|
import { CompressedExpansionService, CompressionToggle, createTreeContainer, TreeCompressionService, TreeContainerProps } from '@theia/core/lib/browser';
|
|
19
|
-
import { FileTree } from './file-tree';
|
|
20
|
-
import { FileTreeModel } from './file-tree-model';
|
|
21
|
-
import { FileTreeWidget } from './file-tree-widget';
|
|
19
|
+
import { FileTree } from './file-tree.js';
|
|
20
|
+
import { FileTreeModel } from './file-tree-model.js';
|
|
21
|
+
import { FileTreeWidget } from './file-tree-widget.js';
|
|
22
22
|
|
|
23
23
|
const fileTreeDefaults: Partial<TreeContainerProps> = {
|
|
24
24
|
tree: FileTree,
|
|
@@ -24,7 +24,7 @@ import { CancellationToken, Emitter, Event } from '@theia/core/lib/common';
|
|
|
24
24
|
import URI from '@theia/core/lib/common/uri';
|
|
25
25
|
import { Container } from '@theia/core/shared/inversify';
|
|
26
26
|
import { expect } from 'chai';
|
|
27
|
-
import { FileTreeDecoratorAdapter } from './file-tree-decorator-adapter';
|
|
27
|
+
import { FileTreeDecoratorAdapter } from './file-tree-decorator-adapter.js';
|
|
28
28
|
|
|
29
29
|
disableJSDOM();
|
|
30
30
|
|
|
@@ -21,7 +21,7 @@ import { Decoration, DecorationsService } from '@theia/core/lib/browser/decorati
|
|
|
21
21
|
import { TreeNode, TreeDecoration, TreeDecorator, Tree, TopDownTreeIterator } from '@theia/core/lib/browser';
|
|
22
22
|
import { MaybePromise } from '@theia/core/lib/common/types';
|
|
23
23
|
import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
|
|
24
|
-
import { FileStatNode } from './file-tree';
|
|
24
|
+
import { FileStatNode } from './file-tree.js';
|
|
25
25
|
|
|
26
26
|
@injectable()
|
|
27
27
|
export class FileTreeDecoratorAdapter implements TreeDecorator {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { injectable, inject } from '@theia/core/shared/inversify';
|
|
18
18
|
import { LabelProviderContribution, DidChangeLabelEvent, LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
19
|
-
import { FileStatNode } from './file-tree';
|
|
19
|
+
import { FileStatNode } from './file-tree.js';
|
|
20
20
|
import { TreeLabelProvider } from '@theia/core/lib/browser/tree/tree-label-provider';
|
|
21
21
|
|
|
22
22
|
@injectable()
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
import { injectable, inject, postConstruct } from '@theia/core/shared/inversify';
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
import { CompositeTreeNode, TreeNode, ConfirmDialog, CompressedTreeModel, Dialog } from '@theia/core/lib/browser';
|
|
20
|
-
import { FileStatNode, DirNode, FileNode } from './file-tree';
|
|
21
|
-
import { LocationService } from '../location';
|
|
20
|
+
import { FileStatNode, DirNode, FileNode } from './file-tree.js';
|
|
21
|
+
import { LocationService } from '../location/index.js';
|
|
22
22
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
23
|
-
import { FileService } from '../file-service';
|
|
24
|
-
import { FileOperationError, FileOperationResult, FileChangesEvent, FileChangeType, FileChange } from '../../common/files';
|
|
23
|
+
import { FileService } from '../file-service.js';
|
|
24
|
+
import { FileOperationError, FileOperationResult, FileChangesEvent, FileChangeType, FileChange } from '../../common/files.js';
|
|
25
25
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
26
26
|
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
27
|
-
import { FileSystemUtils } from '../../common';
|
|
27
|
+
import { FileSystemUtils } from '../../common/index.js';
|
|
28
28
|
import { nls } from '@theia/core';
|
|
29
29
|
|
|
30
30
|
@injectable()
|
|
@@ -133,12 +133,15 @@ export class FileTreeModel extends CompressedTreeModel implements LocationServic
|
|
|
133
133
|
return nodes;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
async copy(source: URI, target: Readonly<FileStatNode>): Promise<URI> {
|
|
136
|
+
async copy(source: URI, target: Readonly<FileStatNode>): Promise<URI | undefined> {
|
|
137
137
|
/** If the target is a file or if the target is a directory, but is the same as the source, use the parent of the target as a destination. */
|
|
138
138
|
const parentNode = (target.fileStat.isFile || target.uri.isEqual(source)) ? target.parent : target;
|
|
139
139
|
if (!FileStatNode.is(parentNode)) {
|
|
140
140
|
throw new Error('Parent of file has to be a FileStatNode');
|
|
141
141
|
}
|
|
142
|
+
if (source.isEqualOrParent(parentNode.uri)) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
142
145
|
let targetUri = parentNode.uri.resolve(source.path.base);
|
|
143
146
|
try {
|
|
144
147
|
const parent = await this.fileService.resolve(parentNode.uri);
|
|
@@ -156,6 +159,9 @@ export class FileTreeModel extends CompressedTreeModel implements LocationServic
|
|
|
156
159
|
*/
|
|
157
160
|
async move(source: TreeNode, target: TreeNode): Promise<URI | undefined> {
|
|
158
161
|
if (DirNode.is(target) && FileStatNode.is(source)) {
|
|
162
|
+
if (source.uri.isEqualOrParent(target.uri)) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
159
165
|
const name = source.fileStat.name;
|
|
160
166
|
const targetUri = target.uri.resolve(name);
|
|
161
167
|
if (source.uri.isEqual(targetUri)) { return; }
|
|
@@ -21,13 +21,13 @@ import URI from '@theia/core/lib/common/uri';
|
|
|
21
21
|
import { UriSelection } from '@theia/core/lib/common/selection';
|
|
22
22
|
import { isCancelled } from '@theia/core/lib/common/cancellation';
|
|
23
23
|
import { ContextMenuRenderer, NodeProps, TreeProps, TreeNode, CompositeTreeNode, CompressedTreeWidget, CompressedNodeProps } from '@theia/core/lib/browser';
|
|
24
|
-
import { DirNode, FileStatNode, FileStatNodeData } from './file-tree';
|
|
25
|
-
import { FileTreeModel } from './file-tree-model';
|
|
24
|
+
import { DirNode, FileStatNode, FileStatNodeData } from './file-tree.js';
|
|
25
|
+
import { FileTreeModel } from './file-tree-model.js';
|
|
26
26
|
import { IconThemeService } from '@theia/core/lib/browser/icon-theme-service';
|
|
27
27
|
import { ApplicationShell } from '@theia/core/lib/browser/shell';
|
|
28
|
-
import { FileStat, FileType } from '../../common/files';
|
|
28
|
+
import { FileStat, FileType } from '../../common/files.js';
|
|
29
29
|
import { isOSX, ILogger } from '@theia/core';
|
|
30
|
-
import { FileUploadService } from '../../common/upload/file-upload';
|
|
30
|
+
import { FileUploadService } from '../../common/upload/file-upload.js';
|
|
31
31
|
|
|
32
32
|
export const FILE_TREE_CLASS = 'theia-FileTree';
|
|
33
33
|
export const FILE_STAT_NODE_CLASS = 'theia-FileStatNode';
|
|
@@ -98,7 +98,10 @@ export class FileTreeWidget extends CompressedTreeWidget {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
protected getNodeTooltip(node: TreeNode): string | undefined {
|
|
101
|
-
const operativeNode = this.
|
|
101
|
+
const operativeNode = this.compressionToggle.compress
|
|
102
|
+
? this.compressionService.getCompressionChain(node)?.tail() ?? node
|
|
103
|
+
: node;
|
|
104
|
+
|
|
102
105
|
const uri = UriSelection.getUri(operativeNode);
|
|
103
106
|
return uri ? uri.path.fsPath() : undefined;
|
|
104
107
|
}
|
|
@@ -18,11 +18,11 @@ import { injectable, inject } from '@theia/core/shared/inversify';
|
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
import { isObject, Mutable } from '@theia/core/lib/common';
|
|
20
20
|
import { TreeNode, CompositeTreeNode, SelectableTreeNode, ExpandableTreeNode, TreeImpl } from '@theia/core/lib/browser';
|
|
21
|
-
import { FileStat, Stat, FileType, FileOperationError, FileOperationResult } from '../../common/files';
|
|
21
|
+
import { FileStat, Stat, FileType, FileOperationError, FileOperationResult } from '../../common/files.js';
|
|
22
22
|
import { UriSelection } from '@theia/core/lib/common/selection';
|
|
23
23
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
24
|
-
import { FileSelection } from '../file-selection';
|
|
25
|
-
import { FileService } from '../file-service';
|
|
24
|
+
import { FileSelection } from '../file-selection.js';
|
|
25
|
+
import { FileService } from '../file-service.js';
|
|
26
26
|
|
|
27
27
|
@injectable()
|
|
28
28
|
export class FileTree extends TreeImpl {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
export * from './file-tree';
|
|
18
|
-
export * from './file-tree-model';
|
|
19
|
-
export * from './file-tree-widget';
|
|
20
|
-
export * from './file-tree-container';
|
|
21
|
-
export * from './file-tree-decorator-adapter';
|
|
22
|
-
export * from './file-tree-label-provider';
|
|
17
|
+
export * from './file-tree.js';
|
|
18
|
+
export * from './file-tree-model.js';
|
|
19
|
+
export * from './file-tree-widget.js';
|
|
20
|
+
export * from './file-tree-container.js';
|
|
21
|
+
export * from './file-tree-decorator-adapter.js';
|
|
22
|
+
export * from './file-tree-label-provider.js';
|
|
@@ -37,12 +37,12 @@ import URI from '@theia/core/lib/common/uri';
|
|
|
37
37
|
import { environment } from '@theia/core/shared/@theia/application-package/lib/environment';
|
|
38
38
|
import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
39
39
|
import { UserWorkingDirectoryProvider } from '@theia/core/lib/browser/user-working-directory-provider';
|
|
40
|
-
import { FileChangeType, FileChangesEvent, FileOperation } from '../common/files';
|
|
41
|
-
import { FileDialogService, SaveFileDialogProps } from './file-dialog';
|
|
42
|
-
import { FileSelection } from './file-selection';
|
|
43
|
-
import { FileService, UserFileOperationEvent } from './file-service';
|
|
44
|
-
import { FileSystemPreferences } from '../common/filesystem-preferences';
|
|
45
|
-
import { FileUploadService } from '../common/upload/file-upload';
|
|
40
|
+
import { FileChangeType, FileChangesEvent, FileOperation } from '../common/files.js';
|
|
41
|
+
import { FileDialogService, SaveFileDialogProps } from './file-dialog/index.js';
|
|
42
|
+
import { FileSelection } from './file-selection.js';
|
|
43
|
+
import { FileService, UserFileOperationEvent } from './file-service.js';
|
|
44
|
+
import { FileSystemPreferences } from '../common/filesystem-preferences.js';
|
|
45
|
+
import { FileUploadService } from '../common/upload/file-upload.js';
|
|
46
46
|
|
|
47
47
|
export namespace FileSystemCommands {
|
|
48
48
|
|
|
@@ -19,22 +19,22 @@ import '../../src/browser/style/index.css';
|
|
|
19
19
|
import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
|
|
20
20
|
import { ResourceResolver, CommandContribution } from '@theia/core/lib/common';
|
|
21
21
|
import { WebSocketConnectionProvider, FrontendApplicationContribution, LabelProviderContribution, BreadcrumbsContribution } from '@theia/core/lib/browser';
|
|
22
|
-
import { FileResourceResolver } from './file-resource';
|
|
23
|
-
import { bindFileSystemPreferences } from '../common/filesystem-preferences';
|
|
24
|
-
import { FileSystemFrontendContribution } from './filesystem-frontend-contribution';
|
|
25
|
-
import { FileTreeDecoratorAdapter, FileTreeLabelProvider } from './file-tree';
|
|
26
|
-
import { FileService, FileServiceContribution } from './file-service';
|
|
27
|
-
import { RemoteFileSystemProvider, RemoteFileSystemServer, remoteFileSystemPath, RemoteFileSystemProxyFactory } from '../common/remote-file-system-provider';
|
|
22
|
+
import { FileResourceResolver } from './file-resource.js';
|
|
23
|
+
import { bindFileSystemPreferences } from '../common/filesystem-preferences.js';
|
|
24
|
+
import { FileSystemFrontendContribution } from './filesystem-frontend-contribution.js';
|
|
25
|
+
import { FileTreeDecoratorAdapter, FileTreeLabelProvider } from './file-tree/index.js';
|
|
26
|
+
import { FileService, FileServiceContribution } from './file-service.js';
|
|
27
|
+
import { RemoteFileSystemProvider, RemoteFileSystemServer, remoteFileSystemPath, RemoteFileSystemProxyFactory } from '../common/remote-file-system-provider.js';
|
|
28
28
|
import { bindRootContributionProvider } from '@theia/core/lib/common/contribution-provider';
|
|
29
|
-
import { RemoteFileServiceContribution } from './remote-file-service-contribution';
|
|
30
|
-
import { FileSystemWatcherErrorHandler } from './filesystem-watcher-error-handler';
|
|
31
|
-
import { FilepathBreadcrumbsContribution } from './breadcrumbs/filepath-breadcrumbs-contribution';
|
|
32
|
-
import { BreadcrumbsFileTreeWidget, createFileTreeBreadcrumbsWidget } from './breadcrumbs/filepath-breadcrumbs-container';
|
|
33
|
-
import { FilesystemSaveableService } from './filesystem-saveable-service';
|
|
29
|
+
import { RemoteFileServiceContribution } from './remote-file-service-contribution.js';
|
|
30
|
+
import { FileSystemWatcherErrorHandler } from './filesystem-watcher-error-handler.js';
|
|
31
|
+
import { FilepathBreadcrumbsContribution } from './breadcrumbs/filepath-breadcrumbs-contribution.js';
|
|
32
|
+
import { BreadcrumbsFileTreeWidget, createFileTreeBreadcrumbsWidget } from './breadcrumbs/filepath-breadcrumbs-container.js';
|
|
33
|
+
import { FilesystemSaveableService } from './filesystem-saveable-service.js';
|
|
34
34
|
import { SaveableService } from '@theia/core/lib/browser/saveable-service';
|
|
35
|
-
import { VSCodeFileServiceContribution, VSCodeFileSystemProvider } from './vscode-file-service-contribution';
|
|
36
|
-
import { FileUploadService } from '../common/upload/file-upload';
|
|
37
|
-
import { FileUploadServiceImpl } from './upload/file-upload-service-impl';
|
|
35
|
+
import { VSCodeFileServiceContribution, VSCodeFileSystemProvider } from './vscode-file-service-contribution.js';
|
|
36
|
+
import { FileUploadService } from '../common/upload/file-upload.js';
|
|
37
|
+
import { FileUploadServiceImpl } from './upload/file-upload-service-impl.js';
|
|
38
38
|
|
|
39
39
|
export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
40
40
|
bindFileSystemPreferences(bind);
|
|
@@ -19,8 +19,8 @@ import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
|
19
19
|
import { Navigatable, Saveable, SaveableSource, SaveOptions, Widget, open, OpenerService, ConfirmDialog, CommonCommands, LabelProvider } from '@theia/core/lib/browser';
|
|
20
20
|
import { SaveableService } from '@theia/core/lib/browser/saveable-service';
|
|
21
21
|
import URI from '@theia/core/lib/common/uri';
|
|
22
|
-
import { FileService } from './file-service';
|
|
23
|
-
import { FileDialogService } from './file-dialog';
|
|
22
|
+
import { FileService } from './file-service.js';
|
|
23
|
+
import { FileDialogService } from './file-dialog/index.js';
|
|
24
24
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
25
25
|
|
|
26
26
|
@injectable()
|
package/src/browser/index.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
export * from './location';
|
|
18
|
-
export * from './file-tree';
|
|
19
|
-
export * from './file-dialog';
|
|
20
|
-
export * from './file-resource';
|
|
17
|
+
export * from './location/index.js';
|
|
18
|
+
export * from './file-tree/index.js';
|
|
19
|
+
export * from './file-dialog/index.js';
|
|
20
|
+
export * from './file-resource.js';
|
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
export * from './location-service';
|
|
18
|
-
export * from './location-renderer';
|
|
17
|
+
export * from './location-service.js';
|
|
18
|
+
export * from './location-renderer.js';
|
|
@@ -20,9 +20,9 @@ let disableJSDOM = enableJSDOM();
|
|
|
20
20
|
import URI from '@theia/core/lib/common/uri';
|
|
21
21
|
import { expect } from 'chai';
|
|
22
22
|
import * as React from '@theia/core/shared/react';
|
|
23
|
-
import type { FileDialogModel } from '../file-dialog/file-dialog-model';
|
|
24
|
-
import { LocationListRenderer } from './location-renderer';
|
|
25
|
-
import type { LocationService } from './location-service';
|
|
23
|
+
import type { FileDialogModel } from '../file-dialog/file-dialog-model.js';
|
|
24
|
+
import { LocationListRenderer } from './location-renderer.js';
|
|
25
|
+
import type { LocationService } from './location-service.js';
|
|
26
26
|
|
|
27
27
|
disableJSDOM();
|
|
28
28
|
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import URI from '@theia/core/lib/common/uri';
|
|
18
|
-
import { LocationService } from './location-service';
|
|
18
|
+
import { LocationService } from './location-service.js';
|
|
19
19
|
import * as React from '@theia/core/shared/react';
|
|
20
|
-
import { FileService } from '../file-service';
|
|
20
|
+
import { FileService } from '../file-service.js';
|
|
21
21
|
import { DisposableCollection, Emitter, Path } from '@theia/core/lib/common';
|
|
22
22
|
import { injectable, inject, postConstruct } from '@theia/core/shared/inversify';
|
|
23
|
-
import { FileDialogModel } from '../file-dialog/file-dialog-model';
|
|
23
|
+
import { FileDialogModel } from '../file-dialog/file-dialog-model.js';
|
|
24
24
|
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
25
25
|
import { ReactRenderer } from '@theia/core/lib/browser/widgets/react-renderer';
|
|
26
26
|
import { codicon } from '@theia/core/lib/browser';
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import { FileServiceContribution, FileService } from './file-service';
|
|
19
|
-
import { RemoteFileSystemProvider } from '../common/remote-file-system-provider';
|
|
18
|
+
import { FileServiceContribution, FileService } from './file-service.js';
|
|
19
|
+
import { RemoteFileSystemProvider } from '../common/remote-file-system-provider.js';
|
|
20
20
|
|
|
21
21
|
@injectable()
|
|
22
22
|
export class RemoteFileServiceContribution implements FileServiceContribution {
|