@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
|
@@ -23,15 +23,15 @@ import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
|
23
23
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
24
24
|
import { Progress } from '@theia/core/lib/common/message-service-protocol';
|
|
25
25
|
import { Endpoint } from '@theia/core/lib/browser/endpoint';
|
|
26
|
-
import throttle
|
|
27
|
-
import { HTTP_FILE_UPLOAD_PATH } from '../../common/file-upload';
|
|
26
|
+
import throttle from '@theia/core/shared/lodash.throttle';
|
|
27
|
+
import { HTTP_FILE_UPLOAD_PATH } from '../../common/file-upload.js';
|
|
28
28
|
import { Semaphore } from 'async-mutex';
|
|
29
|
-
import { FileSystemPreferences } from '../../common/filesystem-preferences';
|
|
30
|
-
import { FileService } from '../file-service';
|
|
29
|
+
import { FileSystemPreferences } from '../../common/filesystem-preferences.js';
|
|
30
|
+
import { FileService } from '../file-service.js';
|
|
31
31
|
import { ConfirmDialog, Dialog } from '@theia/core/lib/browser';
|
|
32
32
|
import { nls } from '@theia/core/lib/common/nls';
|
|
33
33
|
import { Emitter, Event } from '@theia/core/lib/common/event';
|
|
34
|
-
import type { CustomDataTransfer, FileUploadService } from '../../common/upload/file-upload';
|
|
34
|
+
import type { CustomDataTransfer, FileUploadService } from '../../common/upload/file-upload.js';
|
|
35
35
|
|
|
36
36
|
interface UploadFilesParams {
|
|
37
37
|
source: FileUploadService.Source,
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import { FileServiceContribution, FileService } from './file-service';
|
|
18
|
+
import { FileServiceContribution, FileService } from './file-service.js';
|
|
19
19
|
import {
|
|
20
20
|
FileChange, FileDeleteOptions, FileOverwriteOptions, FilePermission, FileSystemProvider, FileSystemProviderCapabilities, FileType, FileWriteOptions, Stat, WatchOptions
|
|
21
|
-
} from '../common/files';
|
|
21
|
+
} from '../common/files.js';
|
|
22
22
|
import { Event, URI, Disposable, Emitter } from '@theia/core';
|
|
23
23
|
import { JsonSchemaDataStore } from '@theia/core/lib/browser/json-schema-store';
|
|
24
24
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
18
|
-
import { FileSystemProvider } from '../common/files';
|
|
19
|
-
import { OPFSFileSystemProvider } from './opfs-filesystem-provider';
|
|
20
|
-
import { RemoteFileSystemProvider, RemoteFileSystemServer } from '../common/remote-file-system-provider';
|
|
21
|
-
import { OPFSInitialization, DefaultOPFSInitialization } from './opfs-filesystem-initialization';
|
|
22
|
-
import { BrowserOnlyFileSystemProviderServer } from './browser-only-filesystem-provider-server';
|
|
23
|
-
import { FileUploadService } from '../common/upload/file-upload';
|
|
24
|
-
import { FileUploadServiceImpl } from './upload/file-upload-service-impl';
|
|
18
|
+
import { FileSystemProvider } from '../common/files.js';
|
|
19
|
+
import { OPFSFileSystemProvider } from './opfs-filesystem-provider.js';
|
|
20
|
+
import { RemoteFileSystemProvider, RemoteFileSystemServer } from '../common/remote-file-system-provider.js';
|
|
21
|
+
import { OPFSInitialization, DefaultOPFSInitialization } from './opfs-filesystem-initialization.js';
|
|
22
|
+
import { BrowserOnlyFileSystemProviderServer } from './browser-only-filesystem-provider-server.js';
|
|
23
|
+
import { FileUploadService } from '../common/upload/file-upload.js';
|
|
24
|
+
import { FileUploadServiceImpl } from './upload/file-upload-service-impl.js';
|
|
25
25
|
|
|
26
26
|
export default new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
27
27
|
bind(DefaultOPFSInitialization).toSelf();
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import { FileSystemProviderServer } from '../common/remote-file-system-provider';
|
|
18
|
+
import { FileSystemProviderServer } from '../common/remote-file-system-provider.js';
|
|
19
19
|
import { Event } from '@theia/core';
|
|
20
20
|
|
|
21
21
|
/**
|
|
@@ -19,8 +19,8 @@ import URI from '@theia/core/lib/common/uri';
|
|
|
19
19
|
import { SelectionService } from '@theia/core/lib/common/selection-service';
|
|
20
20
|
import { CommandContribution, CommandRegistry } from '@theia/core/lib/common/command';
|
|
21
21
|
import { UriAwareCommandHandler } from '@theia/core/lib/common/uri-command-handler';
|
|
22
|
-
import { FileDownloadService } from '../../common/download/file-download';
|
|
23
|
-
import { FileDownloadCommands } from '../../browser/download/file-download-command-contribution';
|
|
22
|
+
import { FileDownloadService } from '../../common/download/file-download.js';
|
|
23
|
+
import { FileDownloadCommands } from '../../browser/download/file-download-command-contribution.js';
|
|
24
24
|
|
|
25
25
|
@injectable()
|
|
26
26
|
export class FileDownloadCommandContribution implements CommandContribution {
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
18
|
-
import { FileDownloadService } from '../../common/download/file-download';
|
|
19
|
-
import { FileDownloadServiceImpl } from './file-download-service';
|
|
18
|
+
import { FileDownloadService } from '../../common/download/file-download.js';
|
|
19
|
+
import { FileDownloadServiceImpl } from './file-download-service.js';
|
|
20
20
|
import { CommandContribution } from '@theia/core/lib/common';
|
|
21
|
-
import { FileDownloadCommandContribution } from './file-download-command-contribution';
|
|
21
|
+
import { FileDownloadCommandContribution } from './file-download-command-contribution.js';
|
|
22
22
|
|
|
23
23
|
export default new ContainerModule(bind => {
|
|
24
24
|
bind(FileDownloadService).to(FileDownloadServiceImpl).inSingletonScope();
|
|
@@ -18,12 +18,12 @@ import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
import { ILogger } from '@theia/core/lib/common/logger';
|
|
20
20
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
21
|
-
import { FileSystemPreferences } from '../../common/filesystem-preferences';
|
|
21
|
+
import { FileSystemPreferences } from '../../common/filesystem-preferences.js';
|
|
22
22
|
import { nls } from '@theia/core';
|
|
23
23
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
24
24
|
import { binaryStreamToWebStream } from '@theia/core/lib/common/stream';
|
|
25
|
-
import { FileService } from '../../browser/file-service';
|
|
26
|
-
import type { FileDownloadService } from '../../common/download/file-download';
|
|
25
|
+
import { FileService } from '../../browser/file-service.js';
|
|
26
|
+
import type { FileDownloadService } from '../../common/download/file-download.js';
|
|
27
27
|
import * as tarStream from 'tar-stream';
|
|
28
28
|
import { minimatch } from 'minimatch';
|
|
29
29
|
|
|
@@ -89,7 +89,8 @@ export function matchesPattern(text: string, patterns: string[], opts?: Minimatc
|
|
|
89
89
|
* @returns An object with add and ignores methods
|
|
90
90
|
*/
|
|
91
91
|
export function createIgnoreMatcher(): { add: (patterns: string | string[]) => void; ignores: (path: string) => boolean } {
|
|
92
|
-
|
|
92
|
+
// `ignore` is a CommonJS module that also provides itself as `default` export.
|
|
93
|
+
const ig = ignore.default();
|
|
93
94
|
|
|
94
95
|
return {
|
|
95
96
|
add: (patterns: string | string[]) => ig.add(patterns),
|
|
@@ -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
|
-
import type { OPFSFileSystemProvider } from './opfs-filesystem-provider';
|
|
17
|
+
import type { OPFSFileSystemProvider } from './opfs-filesystem-provider.js';
|
|
18
18
|
import { injectable } from '@theia/core/shared/inversify';
|
|
19
19
|
|
|
20
20
|
export const OPFSInitialization = Symbol('OPFSInitialization');
|
|
@@ -26,16 +26,16 @@ import {
|
|
|
26
26
|
FileType, FileWriteOptions, Stat, WatchOptions, createFileSystemProviderError,
|
|
27
27
|
FileOpenOptions, FileUpdateOptions, FileUpdateResult,
|
|
28
28
|
type FileReadStreamOptions
|
|
29
|
-
} from '../common/files';
|
|
29
|
+
} from '../common/files.js';
|
|
30
30
|
import { Emitter, Event, URI, Disposable, DisposableCollection, type CancellationToken } from '@theia/core';
|
|
31
31
|
import { EncodingService } from '@theia/core/lib/common/encoding-service';
|
|
32
32
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
33
33
|
import { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
34
34
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
35
35
|
import { OPFSFileSystem, WatchEventType, type FileStat, type OPFSError, type WatchEvent } from 'opfs-worker';
|
|
36
|
-
import { OPFSInitialization } from './opfs-filesystem-initialization';
|
|
36
|
+
import { OPFSInitialization } from './opfs-filesystem-initialization.js';
|
|
37
37
|
import { ReadableStreamEvents, newWriteableStream } from '@theia/core/lib/common/stream';
|
|
38
|
-
import { readFileIntoStream } from '../common/io';
|
|
38
|
+
import { readFileIntoStream } from '../common/io.js';
|
|
39
39
|
import { Path } from '@theia/core/lib/common/path';
|
|
40
40
|
|
|
41
41
|
@injectable()
|
|
@@ -20,17 +20,17 @@ import { CancellationTokenSource, CancellationToken, checkCancelled, isCancelled
|
|
|
20
20
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
21
21
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
22
22
|
import { Progress } from '@theia/core/lib/common/message-service-protocol';
|
|
23
|
-
import throttle
|
|
23
|
+
import throttle from '@theia/core/shared/lodash.throttle';
|
|
24
24
|
import { Semaphore } from 'async-mutex';
|
|
25
|
-
import { FileService } from '../../browser/file-service';
|
|
25
|
+
import { FileService } from '../../browser/file-service.js';
|
|
26
26
|
import { ConfirmDialog, Dialog } from '@theia/core/lib/browser';
|
|
27
27
|
import { nls } from '@theia/core/lib/common/nls';
|
|
28
28
|
import { Emitter, Event } from '@theia/core/lib/common/event';
|
|
29
|
-
import { FileSystemPreferences } from '../../common/filesystem-preferences';
|
|
29
|
+
import { FileSystemPreferences } from '../../common/filesystem-preferences.js';
|
|
30
30
|
import { fileToStream } from '@theia/core/lib/common/stream';
|
|
31
31
|
import { minimatch } from 'minimatch';
|
|
32
32
|
|
|
33
|
-
import type { FileUploadService } from '../../common/upload/file-upload';
|
|
33
|
+
import type { FileUploadService } from '../../common/upload/file-upload.js';
|
|
34
34
|
|
|
35
35
|
interface UploadState {
|
|
36
36
|
uploaded?: boolean;
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
hasReadWriteCapability, hasFileFolderCopyCapability, hasOpenReadWriteCloseCapability, hasAccessCapability, FileUpdateOptions, hasUpdateCapability, FileUpdateResult,
|
|
23
23
|
FileReadStreamOptions,
|
|
24
24
|
hasFileReadStreamCapability
|
|
25
|
-
} from './files';
|
|
25
|
+
} from './files.js';
|
|
26
26
|
import type { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
27
27
|
import { ReadableStreamEvents } from '@theia/core/lib/common/stream';
|
|
28
28
|
|
package/src/common/files.spec.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
|
-
import { FileChangesEvent, FileChangeType } from './files';
|
|
17
|
+
import { FileChangesEvent, FileChangeType } from './files.js';
|
|
18
18
|
import { expect } from 'chai';
|
|
19
19
|
import URI from '@theia/core/lib/common/uri';
|
|
20
20
|
|
|
@@ -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
|
-
import { FileStat } from './files';
|
|
17
|
+
import { FileStat } from './files.js';
|
|
18
18
|
import { expect } from 'chai';
|
|
19
|
-
import { FileSystemUtils } from './filesystem-utils';
|
|
19
|
+
import { FileSystemUtils } from './filesystem-utils.js';
|
|
20
20
|
|
|
21
21
|
describe('generateUniqueResourceURI', () => {
|
|
22
22
|
describe('Target is file', () => {
|
|
@@ -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
|
-
import { FileStat } from '../common/files';
|
|
17
|
+
import { FileStat } from '../common/files.js';
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
|
|
20
20
|
export namespace FileSystemUtils {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { RpcServer } from '@theia/core';
|
|
18
|
-
import { FileChangeType } from './files';
|
|
18
|
+
import { FileChangeType } from './files.js';
|
|
19
19
|
export { FileChangeType };
|
|
20
20
|
|
|
21
21
|
export const FileSystemWatcherService = Symbol('FileSystemWatcherServer2');
|
|
@@ -89,6 +89,10 @@ export interface FileSystemWatcherClient {
|
|
|
89
89
|
|
|
90
90
|
export interface WatchOptions {
|
|
91
91
|
ignored: string[];
|
|
92
|
+
/**
|
|
93
|
+
* Watch the whole subtree under the given path. Defaults to `true`.
|
|
94
|
+
*/
|
|
95
|
+
recursive?: boolean;
|
|
92
96
|
}
|
|
93
97
|
export interface FileChange {
|
|
94
98
|
uri: string;
|
package/src/common/index.ts
CHANGED
|
@@ -14,6 +14,6 @@
|
|
|
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 './filesystem';
|
|
18
|
-
export * from './filesystem-utils';
|
|
19
|
-
export * from './filesystem-preferences';
|
|
17
|
+
export * from './filesystem.js';
|
|
18
|
+
export * from './filesystem-utils.js';
|
|
19
|
+
export * from './filesystem-preferences.js';
|
package/src/common/io.ts
CHANGED
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
/* eslint-disable max-len */
|
|
23
23
|
|
|
24
24
|
import URI from '@theia/core/lib/common/uri';
|
|
25
|
-
import { BinaryBuffer } from '@theia/core/lib/common
|
|
25
|
+
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
26
26
|
import { CancellationToken, cancelled as canceled } from '@theia/core/lib/common/cancellation';
|
|
27
|
-
import { FileSystemProviderWithOpenReadWriteCloseCapability, FileReadStreamOptions, ensureFileSystemProviderError, createFileSystemProviderError, FileSystemProviderErrorCode } from './files';
|
|
27
|
+
import { FileSystemProviderWithOpenReadWriteCloseCapability, FileReadStreamOptions, ensureFileSystemProviderError, createFileSystemProviderError, FileSystemProviderErrorCode } from './files.js';
|
|
28
28
|
import { WriteableStream, ErrorTransformer, DataTransformer } from '@theia/core/lib/common/stream';
|
|
29
29
|
|
|
30
30
|
export interface CreateReadStreamOptions extends FileReadStreamOptions {
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
hasOpenReadWriteCloseCapability, hasFileFolderCopyCapability, hasReadWriteCapability, hasAccessCapability,
|
|
26
26
|
FileSystemProviderError, FileSystemProviderErrorCode, FileUpdateOptions, hasUpdateCapability, FileUpdateResult, FileReadStreamOptions, hasFileReadStreamCapability,
|
|
27
27
|
ReadOnlyMessageFileSystemProvider
|
|
28
|
-
} from './files';
|
|
28
|
+
} from './files.js';
|
|
29
29
|
import { RpcServer, RpcProxy, RpcProxyFactory } from '@theia/core/lib/common/messaging/proxy-factory';
|
|
30
30
|
import { ApplicationError } from '@theia/core/lib/common/application-error';
|
|
31
31
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
18
|
-
import { ElectronFileDialogService } from './electron-file-dialog-service';
|
|
19
|
-
import { FileDialogService } from '../../browser';
|
|
18
|
+
import { ElectronFileDialogService } from './electron-file-dialog-service.js';
|
|
19
|
+
import { FileDialogService } from '../../browser/index.js';
|
|
20
20
|
|
|
21
21
|
export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
22
22
|
bind(ElectronFileDialogService).toSelf().inSingletonScope();
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 Vinay Kaushal and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
|
|
20
|
+
import { expect } from 'chai';
|
|
21
|
+
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
22
|
+
import URI from '@theia/core/lib/common/uri';
|
|
23
|
+
import { OpenFileDialogProps } from '../../browser/file-dialog/index.js';
|
|
24
|
+
import { OpenDialogOptions } from '../../electron-common/electron-api.js';
|
|
25
|
+
import { ElectronFileDialogService } from './electron-file-dialog-service.js';
|
|
26
|
+
|
|
27
|
+
disableJSDOM();
|
|
28
|
+
|
|
29
|
+
class TestElectronFileDialogService extends ElectronFileDialogService {
|
|
30
|
+
override toOpenDialogOptions(uri: URI, props: OpenFileDialogProps): OpenDialogOptions {
|
|
31
|
+
return super.toOpenDialogOptions(uri, props);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
describe('ElectronFileDialogService', () => {
|
|
36
|
+
|
|
37
|
+
before(() => disableJSDOM = enableJSDOM());
|
|
38
|
+
after(() => disableJSDOM());
|
|
39
|
+
|
|
40
|
+
const uri = FileUri.create('/home/user');
|
|
41
|
+
const filters = { 'Theia Workspace': ['theia-workspace'] };
|
|
42
|
+
|
|
43
|
+
it('adds an All Files filter to the given filters', () => {
|
|
44
|
+
const options = new TestElectronFileDialogService().toOpenDialogOptions(uri, { title: 'Open', canSelectFiles: true, filters });
|
|
45
|
+
expect(options.filters).to.deep.equal([
|
|
46
|
+
{ name: 'Theia Workspace', extensions: ['theia-workspace'] },
|
|
47
|
+
{ name: 'All Files', extensions: ['*'] }
|
|
48
|
+
]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('omits the All Files filter if it is disabled', () => {
|
|
52
|
+
const options = new TestElectronFileDialogService().toOpenDialogOptions(uri, { title: 'Open', canSelectFiles: true, filters, disableAllFilesFilter: true });
|
|
53
|
+
expect(options.filters).to.deep.equal([
|
|
54
|
+
{ name: 'Theia Workspace', extensions: ['theia-workspace'] }
|
|
55
|
+
]);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
@@ -18,9 +18,9 @@ import { inject, injectable } from '@theia/core/shared/inversify';
|
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
import { MaybeArray } from '@theia/core/lib/common/types';
|
|
20
20
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
21
|
-
import { FileStat } from '../../common/files';
|
|
22
|
-
import { FileAccess } from '../../common/filesystem';
|
|
23
|
-
import { DefaultFileDialogService, OpenFileDialogProps, SaveFileDialogProps } from '../../browser/file-dialog';
|
|
21
|
+
import { FileStat } from '../../common/files.js';
|
|
22
|
+
import { FileAccess } from '../../common/filesystem.js';
|
|
23
|
+
import { DefaultFileDialogService, OpenFileDialogProps, SaveFileDialogProps } from '../../browser/file-dialog/index.js';
|
|
24
24
|
//
|
|
25
25
|
// We are OK to use this here because the electron backend and frontend are on the same host.
|
|
26
26
|
// If required, we can move this single service (and its module) to a dedicated Theia extension,
|
|
@@ -29,7 +29,7 @@ import { DefaultFileDialogService, OpenFileDialogProps, SaveFileDialogProps } fr
|
|
|
29
29
|
//
|
|
30
30
|
// eslint-disable-next-line @theia/runtime-import-check
|
|
31
31
|
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
32
|
-
import { OpenDialogOptions, SaveDialogOptions } from '../../electron-common/electron-api';
|
|
32
|
+
import { OpenDialogOptions, SaveDialogOptions } from '../../electron-common/electron-api.js';
|
|
33
33
|
|
|
34
34
|
import '@theia/core/lib/electron-common/electron-api';
|
|
35
35
|
|
|
@@ -136,7 +136,7 @@ export class ElectronFileDialogService extends DefaultFileDialogService {
|
|
|
136
136
|
result.filters.push({ name: label, extensions: extensions });
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
if (props.canSelectFiles) {
|
|
139
|
+
if (props.canSelectFiles && !props.disableAllFilesFilter) {
|
|
140
140
|
if (filters.length > 0) {
|
|
141
141
|
result.filters.push({ name: 'All Files', extensions: ['*'] });
|
|
142
142
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
-
import { CHANNEL_SHOW_OPEN, CHANNEL_SHOW_SAVE, OpenDialogOptions, SaveDialogOptions, TheiaFilesystemAPI } from '../electron-common/electron-api';
|
|
16
|
+
import { CHANNEL_SHOW_OPEN, CHANNEL_SHOW_SAVE, OpenDialogOptions, SaveDialogOptions, TheiaFilesystemAPI } from '../electron-common/electron-api.js';
|
|
17
17
|
|
|
18
18
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
19
19
|
import { ipcRenderer, contextBridge } from '@theia/core/electron-shared/electron';
|
|
@@ -18,7 +18,7 @@ import { injectable } from '@theia/core/shared/inversify';
|
|
|
18
18
|
|
|
19
19
|
import { ElectronMainApplication, ElectronMainApplicationContribution } from '@theia/core/lib/electron-main/electron-main-application';
|
|
20
20
|
import { MaybePromise } from '@theia/core';
|
|
21
|
-
import { CHANNEL_SHOW_OPEN, CHANNEL_SHOW_SAVE, OpenDialogOptions, SaveDialogOptions } from '../electron-common/electron-api';
|
|
21
|
+
import { CHANNEL_SHOW_OPEN, CHANNEL_SHOW_SAVE, OpenDialogOptions, SaveDialogOptions } from '../electron-common/electron-api.js';
|
|
22
22
|
import { ipcMain, OpenDialogOptions as ElectronOpenDialogOptions, SaveDialogOptions as ElectronSaveDialogOptions, BrowserWindow, dialog }
|
|
23
23
|
from '@theia/core/electron-shared/electron';
|
|
24
24
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
17
17
|
import { ElectronMainApplicationContribution } from '@theia/core/lib/electron-main/electron-main-application';
|
|
18
|
-
import { ElectronApi } from './electron-api-main';
|
|
18
|
+
import { ElectronApi } from './electron-api-main.js';
|
|
19
19
|
|
|
20
20
|
export default new ContainerModule(bind => {
|
|
21
21
|
bind(ElectronApi).toSelf().inSingletonScope();
|
|
@@ -27,9 +27,9 @@ import * as os from 'os';
|
|
|
27
27
|
import { join } from 'path';
|
|
28
28
|
import * as temp from 'temp';
|
|
29
29
|
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
30
|
-
import { FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode } from '../common/files';
|
|
31
|
-
import { DiskFileSystemProvider } from './disk-file-system-provider';
|
|
32
|
-
import { bindFileSystemWatcherServer } from './filesystem-backend-module';
|
|
30
|
+
import { FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode } from '../common/files.js';
|
|
31
|
+
import { DiskFileSystemProvider } from './disk-file-system-provider.js';
|
|
32
|
+
import { bindFileSystemWatcherServer } from './filesystem-backend-module.js';
|
|
33
33
|
|
|
34
34
|
const tracked = temp.track();
|
|
35
35
|
|
|
@@ -114,6 +114,35 @@ describe('disk-file-system-provider', () => {
|
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
116
|
|
|
117
|
+
it('handles errors during temporary cleanup', async () => {
|
|
118
|
+
const tempDirPath = tracked.mkdirSync();
|
|
119
|
+
const provider = fsProvider as unknown as {
|
|
120
|
+
rimrafMove(path: string): Promise<void>;
|
|
121
|
+
rimrafUnlink(path: string): Promise<void>;
|
|
122
|
+
logger: ILogger;
|
|
123
|
+
};
|
|
124
|
+
const originalRimrafUnlink = provider.rimrafUnlink;
|
|
125
|
+
const originalWarn = provider.logger.warn;
|
|
126
|
+
let resolveWarning!: () => void;
|
|
127
|
+
const warningHandled = new Promise<void>(resolve => {
|
|
128
|
+
resolveWarning = resolve;
|
|
129
|
+
});
|
|
130
|
+
provider.rimrafUnlink = async path => {
|
|
131
|
+
await fs.rm(path, { recursive: true, force: true });
|
|
132
|
+
throw new Error('Cleanup failed');
|
|
133
|
+
};
|
|
134
|
+
provider.logger.warn = async () => {
|
|
135
|
+
resolveWarning();
|
|
136
|
+
};
|
|
137
|
+
try {
|
|
138
|
+
await provider.rimrafMove(tempDirPath);
|
|
139
|
+
await warningHandled;
|
|
140
|
+
} finally {
|
|
141
|
+
provider.rimrafUnlink = originalRimrafUnlink;
|
|
142
|
+
provider.logger.warn = originalWarn;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
117
146
|
it('delete is able to delete file', async function (): Promise<void> {
|
|
118
147
|
this.timeout(10000);
|
|
119
148
|
// Place the temp dir under $HOME so the XDG trash dir (~/.local/share/Trash) is on the same
|
|
@@ -56,17 +56,18 @@ import {
|
|
|
56
56
|
FileChange,
|
|
57
57
|
WatchOptions,
|
|
58
58
|
FileUpdateOptions, FileUpdateResult, FileReadStreamOptions, FilePermission
|
|
59
|
-
} from '../common/files';
|
|
60
|
-
import { FileSystemWatcherServer } from '../common/filesystem-watcher-protocol';
|
|
61
|
-
import trash
|
|
59
|
+
} from '../common/files.js';
|
|
60
|
+
import { FileSystemWatcherServer } from '../common/filesystem-watcher-protocol.js';
|
|
61
|
+
import trash from 'trash';
|
|
62
62
|
import { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
63
63
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
64
64
|
import { EncodingService } from '@theia/core/lib/common/encoding-service';
|
|
65
65
|
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
66
66
|
import { ReadableStreamEvents, newWriteableStream } from '@theia/core/lib/common/stream';
|
|
67
67
|
import { CancellationToken } from '@theia/core/lib/common/cancellation';
|
|
68
|
-
import { readFileIntoStream } from '../common/io';
|
|
69
|
-
|
|
68
|
+
import { readFileIntoStream } from '../common/io.js';
|
|
69
|
+
// A CommonJS module whose exports cannot be detected statically, so it is imported as a whole.
|
|
70
|
+
import statMode from 'stat-mode';
|
|
70
71
|
|
|
71
72
|
export namespace DiskFileSystemProvider {
|
|
72
73
|
export interface StatAndLink {
|
|
@@ -156,7 +157,7 @@ export class DiskFileSystemProvider implements Disposable,
|
|
|
156
157
|
async stat(resource: URI): Promise<Stat> {
|
|
157
158
|
try {
|
|
158
159
|
const { stat, symbolicLink } = await this.statLink(this.toFilePath(resource)); // cannot use fs.stat() here to support links properly
|
|
159
|
-
const mode = new Mode(stat);
|
|
160
|
+
const mode = new statMode.Mode(stat);
|
|
160
161
|
return {
|
|
161
162
|
type: this.toType(stat, symbolicLink),
|
|
162
163
|
ctime: stat.birthtime.getTime(), // intentionally not using ctime here, we want the creation time
|
|
@@ -541,7 +542,9 @@ export class DiskFileSystemProvider implements Disposable,
|
|
|
541
542
|
}
|
|
542
543
|
|
|
543
544
|
// Delete but do not return as promise
|
|
544
|
-
this.rimrafUnlink(pathInTemp)
|
|
545
|
+
this.rimrafUnlink(pathInTemp).catch(error => {
|
|
546
|
+
this.logger.warn(`Failed to clean up temporary rimraf folder '${pathInTemp}':`, error);
|
|
547
|
+
});
|
|
545
548
|
} catch (error) {
|
|
546
549
|
if (error.code !== 'ENOENT') {
|
|
547
550
|
throw error;
|
|
@@ -833,7 +836,8 @@ export class DiskFileSystemProvider implements Disposable,
|
|
|
833
836
|
};
|
|
834
837
|
watcherService.watchFileChanges(resource.toString(), {
|
|
835
838
|
// Convert from `files.WatchOptions` to internal `watcher-protocol.WatchOptions`:
|
|
836
|
-
ignored: opts.excludes
|
|
839
|
+
ignored: opts.excludes,
|
|
840
|
+
recursive: opts.recursive
|
|
837
841
|
}).then(watcherId => {
|
|
838
842
|
if (handle.disposed) {
|
|
839
843
|
watcherService.unwatchFileChanges(watcherId);
|
|
@@ -20,7 +20,7 @@ import * as temp from 'temp';
|
|
|
20
20
|
import { extract } from 'tar-fs';
|
|
21
21
|
import { expect } from 'chai';
|
|
22
22
|
import URI from '@theia/core/lib/common/uri';
|
|
23
|
-
import { MockDirectoryArchiver } from './test/mock-directory-archiver';
|
|
23
|
+
import { MockDirectoryArchiver } from './test/mock-directory-archiver.js';
|
|
24
24
|
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
25
25
|
|
|
26
26
|
const track = temp.track();
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
18
18
|
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
|
|
19
|
-
import { FileDownloadEndpoint } from './file-download-endpoint';
|
|
20
|
-
import { FileDownloadHandler, SingleFileDownloadHandler, MultiFileDownloadHandler, DownloadLinkHandler } from './file-download-handler';
|
|
21
|
-
import { DirectoryArchiver } from './directory-archiver';
|
|
22
|
-
import { FileDownloadCache } from './file-download-cache';
|
|
19
|
+
import { FileDownloadEndpoint } from './file-download-endpoint.js';
|
|
20
|
+
import { FileDownloadHandler, SingleFileDownloadHandler, MultiFileDownloadHandler, DownloadLinkHandler } from './file-download-handler.js';
|
|
21
|
+
import { DirectoryArchiver } from './directory-archiver.js';
|
|
22
|
+
import { FileDownloadCache } from './file-download-cache.js';
|
|
23
23
|
|
|
24
24
|
export default new ContainerModule(bind => {
|
|
25
25
|
bind(FileDownloadEndpoint).toSelf().inSingletonScope();
|
|
@@ -39,7 +39,7 @@ export class FileDownloadCache {
|
|
|
39
39
|
downloadInfo.root = encodeURIComponent(downloadInfo.root);
|
|
40
40
|
}
|
|
41
41
|
// expires in 1 minute enough for parallel connections to be connected.
|
|
42
|
-
downloadInfo.expire = Date.now() + (this.expireTimeInMinutes *
|
|
42
|
+
downloadInfo.expire = Date.now() + (this.expireTimeInMinutes * 60 * 1000);
|
|
43
43
|
this.downloads.set(id, downloadInfo);
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
|
|
19
19
|
import { injectable, inject, named } from '@theia/core/shared/inversify';
|
|
20
|
-
|
|
20
|
+
// A CommonJS module whose exports cannot be detected statically, so it is imported as a whole.
|
|
21
|
+
import bodyParser from 'body-parser';
|
|
21
22
|
import { Application, Router, RequestHandler } from '@theia/core/shared/express';
|
|
22
23
|
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
|
|
23
24
|
import { HttpConnectionValidator } from '@theia/core/lib/node';
|
|
24
25
|
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
25
|
-
import { FileDownloadHandler } from './file-download-handler';
|
|
26
|
+
import { FileDownloadHandler } from './file-download-handler.js';
|
|
26
27
|
|
|
27
28
|
@injectable()
|
|
28
29
|
export class FileDownloadEndpoint implements BackendApplicationContribution {
|
|
@@ -52,7 +53,7 @@ export class FileDownloadEndpoint implements BackendApplicationContribution {
|
|
|
52
53
|
router.get('/', (request, response) => this.singleFileDownloadHandler.handle(request, response));
|
|
53
54
|
router.put('/', (request, response) => this.multiFileDownloadHandler.handle(request, response));
|
|
54
55
|
// Content-Type: application/json
|
|
55
|
-
app.use(json());
|
|
56
|
+
app.use(bodyParser.json());
|
|
56
57
|
app.use(FileDownloadEndpoint.PATH, guard, router);
|
|
57
58
|
app.get('/file', guard, (request, response) => {
|
|
58
59
|
const uri = new URL(request.url, 'http://localhost').search.slice(1);
|
|
@@ -25,9 +25,9 @@ import URI from '@theia/core/lib/common/uri';
|
|
|
25
25
|
import { isEmpty } from '@theia/core/lib/common/objects';
|
|
26
26
|
import { ILogger } from '@theia/core/lib/common/logger';
|
|
27
27
|
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
28
|
-
import { DirectoryArchiver } from './directory-archiver';
|
|
29
|
-
import { FileDownloadData } from '../../common/download/file-download';
|
|
30
|
-
import { FileDownloadCache, DownloadStorageItem } from './file-download-cache';
|
|
28
|
+
import { DirectoryArchiver } from './directory-archiver.js';
|
|
29
|
+
import { FileDownloadData } from '../../common/download/file-download.js';
|
|
30
|
+
import { FileDownloadCache, DownloadStorageItem } from './file-download-cache.js';
|
|
31
31
|
|
|
32
32
|
interface PrepareDownloadOptions {
|
|
33
33
|
filePath: string;
|
|
@@ -285,7 +285,6 @@ export class MultiFileDownloadHandler extends FileDownloadHandler {
|
|
|
285
285
|
}
|
|
286
286
|
const options: PrepareDownloadOptions = { filePath: '', downloadId, remove: true, root: outputRootPath };
|
|
287
287
|
if (tarPaths.length === 1) {
|
|
288
|
-
// tslint:disable-next-line:whitespace
|
|
289
288
|
const [outputPath,] = tarPaths;
|
|
290
289
|
options.filePath = outputPath;
|
|
291
290
|
await this.prepareDownload(request, response, options);
|
|
@@ -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
|
-
import { DirectoryArchiver } from '../directory-archiver';
|
|
17
|
+
import { DirectoryArchiver } from '../directory-archiver.js';
|
|
18
18
|
import URI from '@theia/core/lib/common/uri';
|
|
19
19
|
|
|
20
20
|
export class MockDirectoryArchiver extends DirectoryArchiver {
|