@theia/filesystem 1.77.0-next.95 → 1.77.0
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 -24
- 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 +1 -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 +16 -21
- 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.js +9 -11
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js.map +1 -1
- 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 +6 -6
- package/lib/browser/file-dialog/file-dialog.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog.js +114 -132
- 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 -42
- 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.js +14 -16
- package/lib/browser/file-service-activation.spec.js.map +1 -1
- package/lib/browser/file-service-copy.spec.js +44 -47
- package/lib/browser/file-service-copy.spec.js.map +1 -1
- package/lib/browser/file-service-watcher.spec.js +199 -202
- package/lib/browser/file-service-watcher.spec.js.map +1 -1
- package/lib/browser/file-service.d.ts +3 -3
- package/lib/browser/file-service.d.ts.map +1 -1
- package/lib/browser/file-service.js +166 -181
- 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 -29
- 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 -64
- 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 -15
- 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 -59
- package/lib/common/files.js.map +1 -1
- package/lib/common/files.spec.js +22 -25
- 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 +1 -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 +5 -5
- 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 +21 -23
- 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.js +33 -12
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js.map +1 -1
- package/lib/electron-browser/preload.js +6 -9
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +4 -0
- package/lib/electron-common/electron-api.d.ts.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.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +19 -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/archive/archive-extractor.d.ts +86 -0
- package/lib/node/archive/archive-extractor.d.ts.map +1 -0
- package/lib/node/archive/archive-extractor.js +290 -0
- package/lib/node/archive/archive-extractor.js.map +1 -0
- package/lib/node/archive/archive-extractor.spec.d.ts +2 -0
- package/lib/node/archive/archive-extractor.spec.d.ts.map +1 -0
- package/lib/node/archive/archive-extractor.spec.js +317 -0
- package/lib/node/archive/archive-extractor.spec.js.map +1 -0
- package/lib/node/archive/test/test-archives.d.ts +20 -0
- package/lib/node/archive/test/test-archives.d.ts.map +1 -0
- package/lib/node/archive/test/test-archives.js +97 -0
- package/lib/node/archive/test/test-archives.js.map +1 -0
- 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 +111 -119
- package/lib/node/disk-file-system-provider.js.map +1 -1
- package/lib/node/disk-file-system-provider.spec.js +53 -56
- 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 -23
- 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 +11 -15
- 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 -76
- 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 -8
- package/lib/node/file-change-collection.spec.js.map +1 -1
- package/lib/node/filesystem-backend-module.d.ts +1 -1
- package/lib/node/filesystem-backend-module.d.ts.map +1 -1
- package/lib/node/filesystem-backend-module.js +60 -64
- 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 +3 -3
- package/lib/node/filesystem-watcher-service-impl.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-service-impl.js +7 -11
- package/lib/node/filesystem-watcher-service-impl.js.map +1 -1
- package/lib/node/filesystem-watcher-service-impl.spec.js +23 -26
- package/lib/node/filesystem-watcher-service-impl.spec.js.map +1 -1
- package/lib/node/filesystem-watcher.d.ts +1 -1
- package/lib/node/filesystem-watcher.d.ts.map +1 -1
- package/lib/node/filesystem-watcher.js +6 -11
- package/lib/node/filesystem-watcher.js.map +1 -1
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts +4 -4
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts.map +1 -1
- package/lib/node/nodejs-watcher/node-directory-watcher.js +20 -26
- package/lib/node/nodejs-watcher/node-directory-watcher.js.map +1 -1
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js +51 -54
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js.map +1 -1
- package/lib/node/nodejs-watcher/watch-request-router.d.ts +3 -3
- package/lib/node/nodejs-watcher/watch-request-router.d.ts.map +1 -1
- package/lib/node/nodejs-watcher/watch-request-router.js +8 -13
- package/lib/node/nodejs-watcher/watch-request-router.js.map +1 -1
- package/lib/node/nodejs-watcher/watcher-host.d.ts +1 -1
- package/lib/node/nodejs-watcher/watcher-host.d.ts.map +1 -1
- package/lib/node/nodejs-watcher/watcher-host.js +7 -12
- package/lib/node/nodejs-watcher/watcher-host.js.map +1 -1
- package/lib/node/parcel-watcher/index.js +6 -9
- package/lib/node/parcel-watcher/index.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts +4 -4
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.js +4 -8
- package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js +23 -26
- 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 +11 -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 -16
- package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher.d.ts +3 -3
- package/lib/node/parcel-watcher/parcel-watcher.d.ts.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher.js +28 -32
- package/lib/node/parcel-watcher/parcel-watcher.js.map +1 -1
- package/lib/node/test/watcher-test-helper.d.ts +1 -1
- package/lib/node/test/watcher-test-helper.d.ts.map +1 -1
- package/lib/node/test/watcher-test-helper.js +5 -10
- package/lib/node/test/watcher-test-helper.js.map +1 -1
- 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 -24
- package/lib/node/upload/node-file-upload-service.spec.js.map +1 -1
- package/package.json +21 -5
- 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 -1
- 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 +2 -2
- package/src/browser/file-dialog/file-dialog-tree-filters-renderer.tsx +1 -1
- 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 +16 -13
- 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 +2 -2
- package/src/browser/file-service-copy.spec.ts +2 -2
- package/src/browser/file-service-watcher.spec.ts +2 -2
- package/src/browser/file-service.ts +6 -6
- 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 +1 -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 +30 -3
- package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +8 -6
- package/src/electron-browser/preload.ts +1 -1
- package/src/electron-common/electron-api.ts +4 -0
- package/src/electron-main/electron-api-main.ts +7 -3
- package/src/electron-main/electron-main-module.ts +1 -1
- package/src/node/archive/archive-extractor.spec.ts +359 -0
- package/src/node/archive/archive-extractor.ts +350 -0
- package/src/node/archive/test/test-archives.ts +117 -0
- package/src/node/disk-file-system-provider.spec.ts +3 -3
- package/src/node/disk-file-system-provider.ts +7 -6
- 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-endpoint.ts +4 -3
- package/src/node/download/file-download-handler.ts +3 -3
- 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 -12
- 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 +5 -5
- package/src/node/filesystem-watcher-service-impl.ts +4 -4
- package/src/node/filesystem-watcher.ts +1 -1
- package/src/node/nodejs-watcher/node-directory-watcher.spec.ts +5 -5
- package/src/node/nodejs-watcher/node-directory-watcher.ts +5 -5
- package/src/node/nodejs-watcher/watch-request-router.ts +4 -4
- package/src/node/nodejs-watcher/watcher-host.ts +1 -1
- package/src/node/parcel-watcher/index.ts +2 -2
- package/src/node/parcel-watcher/parcel-filesystem-service.ts +4 -4
- package/src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts +2 -2
- package/src/node/parcel-watcher/parcel-watcher-exclude.spec.ts +4 -8
- package/src/node/parcel-watcher/parcel-watcher-retry.spec.ts +4 -6
- package/src/node/parcel-watcher/parcel-watcher.ts +7 -6
- package/src/node/test/watcher-test-helper.ts +1 -1
- package/src/node/upload/node-file-upload-service.spec.ts +1 -1
- package/src/node/upload/node-file-upload-service.ts +6 -6
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2020 TypeFox and others.
|
|
4
3
|
//
|
|
@@ -19,45 +18,44 @@
|
|
|
19
18
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
20
19
|
*--------------------------------------------------------------------------------------------*/
|
|
21
20
|
// based on https://github.com/microsoft/vscode/blob/04c36be045a94fee58e5f8992d3e3fd980294a84/src/vs/platform/files/node/diskFileSystemProvider.ts
|
|
22
|
-
|
|
23
|
-
exports.DiskFileSystemProvider = void 0;
|
|
24
|
-
const tslib_1 = require("tslib");
|
|
21
|
+
import { __decorate } from "tslib";
|
|
25
22
|
/* eslint-disable no-null/no-null */
|
|
26
23
|
/* eslint-disable @typescript-eslint/no-shadow */
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
24
|
+
import { injectable, inject, postConstruct, named } from '@theia/core/shared/inversify';
|
|
25
|
+
import { ILogger } from '@theia/core';
|
|
26
|
+
import { basename, dirname, normalize, join } from 'path';
|
|
27
|
+
import { generateUuid } from '@theia/core/lib/common/uuid';
|
|
28
|
+
import * as os from 'os';
|
|
29
|
+
import * as fs from 'fs';
|
|
30
|
+
import { mkdir, open, close, read, write, fdatasync, lstat, stat, readdir, readFile, exists, chmod, rmdir, unlink, rename, futimes, truncate } from 'fs';
|
|
31
|
+
import { promisify } from 'util';
|
|
32
|
+
import URI from '@theia/core/lib/common/uri';
|
|
33
|
+
import { Path } from '@theia/core/lib/common/path';
|
|
34
|
+
import { FileUri } from '@theia/core/lib/common/file-uri';
|
|
35
|
+
import { Event, Emitter } from '@theia/core/lib/common/event';
|
|
36
|
+
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
37
|
+
import { OS, isWindows } from '@theia/core/lib/common/os';
|
|
38
|
+
import { retry } from '@theia/core/lib/common/promise-util';
|
|
39
|
+
import { FileType, createFileSystemProviderError, FileSystemProviderErrorCode, FileSystemProviderError, FilePermission } from '../common/files.js';
|
|
40
|
+
import { FileSystemWatcherServer } from '../common/filesystem-watcher-protocol.js';
|
|
41
|
+
import trash from 'trash';
|
|
42
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
43
|
+
import { EncodingService } from '@theia/core/lib/common/encoding-service';
|
|
44
|
+
import { BinaryBuffer } from '@theia/core/lib/common/buffer';
|
|
45
|
+
import { newWriteableStream } from '@theia/core/lib/common/stream';
|
|
46
|
+
import { readFileIntoStream } from '../common/io.js';
|
|
47
|
+
// A CommonJS module whose exports cannot be detected statically, so it is imported as a whole.
|
|
48
|
+
import statMode from 'stat-mode';
|
|
51
49
|
let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
52
50
|
constructor() {
|
|
53
51
|
this.BUFFER_SIZE = 64 * 1024;
|
|
54
|
-
this.onDidChangeFileEmitter = new
|
|
52
|
+
this.onDidChangeFileEmitter = new Emitter();
|
|
55
53
|
this.onDidChangeFile = this.onDidChangeFileEmitter.event;
|
|
56
|
-
this.onFileWatchErrorEmitter = new
|
|
54
|
+
this.onFileWatchErrorEmitter = new Emitter();
|
|
57
55
|
this.onFileWatchError = this.onFileWatchErrorEmitter.event;
|
|
58
|
-
this.toDispose = new
|
|
56
|
+
this.toDispose = new DisposableCollection(this.onDidChangeFileEmitter);
|
|
59
57
|
// #region File Capabilities
|
|
60
|
-
this.onDidChangeCapabilities =
|
|
58
|
+
this.onDidChangeCapabilities = Event.None;
|
|
61
59
|
this.mapHandleToPos = new Map();
|
|
62
60
|
this.writeHandles = new Set();
|
|
63
61
|
this.canFlush = true;
|
|
@@ -66,7 +64,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
66
64
|
this.toDispose.push(this.watcher);
|
|
67
65
|
this.watcher.setClient({
|
|
68
66
|
onDidFilesChanged: params => this.onDidChangeFileEmitter.fire(params.changes.map(({ uri, type }) => ({
|
|
69
|
-
resource: new
|
|
67
|
+
resource: new URI(uri),
|
|
70
68
|
type
|
|
71
69
|
}))),
|
|
72
70
|
onError: () => this.onFileWatchErrorEmitter.fire()
|
|
@@ -82,7 +80,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
82
80
|
16777216 /* FileSystemProviderCapabilities.Access */ |
|
|
83
81
|
4096 /* FileSystemProviderCapabilities.Trash */ |
|
|
84
82
|
33554432 /* FileSystemProviderCapabilities.Update */;
|
|
85
|
-
if (
|
|
83
|
+
if (OS.type() === OS.Type.Linux) {
|
|
86
84
|
this._capabilities |= 1024 /* FileSystemProviderCapabilities.PathCaseSensitive */;
|
|
87
85
|
}
|
|
88
86
|
}
|
|
@@ -93,13 +91,13 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
93
91
|
async stat(resource) {
|
|
94
92
|
try {
|
|
95
93
|
const { stat, symbolicLink } = await this.statLink(this.toFilePath(resource)); // cannot use fs.stat() here to support links properly
|
|
96
|
-
const mode = new
|
|
94
|
+
const mode = new statMode.Mode(stat);
|
|
97
95
|
return {
|
|
98
96
|
type: this.toType(stat, symbolicLink),
|
|
99
97
|
ctime: stat.birthtime.getTime(), // intentionally not using ctime here, we want the creation time
|
|
100
98
|
mtime: stat.mtime.getTime(),
|
|
101
99
|
size: stat.size,
|
|
102
|
-
permissions: !mode.owner.write ?
|
|
100
|
+
permissions: !mode.owner.write ? FilePermission.Readonly : undefined,
|
|
103
101
|
};
|
|
104
102
|
}
|
|
105
103
|
catch (error) {
|
|
@@ -108,20 +106,20 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
108
106
|
}
|
|
109
107
|
async access(resource, mode) {
|
|
110
108
|
try {
|
|
111
|
-
await
|
|
109
|
+
await promisify(fs.access)(this.toFilePath(resource), mode);
|
|
112
110
|
}
|
|
113
111
|
catch (error) {
|
|
114
112
|
throw this.toFileSystemProviderError(error);
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
115
|
async fsPath(resource) {
|
|
118
|
-
return
|
|
116
|
+
return FileUri.fsPath(resource);
|
|
119
117
|
}
|
|
120
118
|
async statLink(path) {
|
|
121
119
|
// First stat the link
|
|
122
120
|
let lstats;
|
|
123
121
|
try {
|
|
124
|
-
lstats = await
|
|
122
|
+
lstats = await promisify(lstat)(path);
|
|
125
123
|
// Return early if the stat is not a symbolic link at all
|
|
126
124
|
if (!lstats.isSymbolicLink()) {
|
|
127
125
|
return { stat: lstats };
|
|
@@ -133,7 +131,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
133
131
|
// If the stat is a symbolic link or failed to stat, use fs.stat()
|
|
134
132
|
// which for symbolic links will stat the target they point to
|
|
135
133
|
try {
|
|
136
|
-
const stats = await
|
|
134
|
+
const stats = await promisify(stat)(path);
|
|
137
135
|
return { stat: stats, symbolicLink: lstats?.isSymbolicLink() ? { dangling: false } : undefined };
|
|
138
136
|
}
|
|
139
137
|
catch (error) {
|
|
@@ -147,7 +145,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
147
145
|
}
|
|
148
146
|
async readdir(resource) {
|
|
149
147
|
try {
|
|
150
|
-
const children = await
|
|
148
|
+
const children = await promisify(fs.readdir)(this.toFilePath(resource));
|
|
151
149
|
const result = [];
|
|
152
150
|
await Promise.all(children.map(async (child) => {
|
|
153
151
|
try {
|
|
@@ -170,20 +168,20 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
170
168
|
// - files that are neither file nor directory are FileType.Unknown
|
|
171
169
|
let type;
|
|
172
170
|
if (symbolicLink?.dangling) {
|
|
173
|
-
type =
|
|
171
|
+
type = FileType.Unknown;
|
|
174
172
|
}
|
|
175
173
|
else if (entry.isFile()) {
|
|
176
|
-
type =
|
|
174
|
+
type = FileType.File;
|
|
177
175
|
}
|
|
178
176
|
else if (entry.isDirectory()) {
|
|
179
|
-
type =
|
|
177
|
+
type = FileType.Directory;
|
|
180
178
|
}
|
|
181
179
|
else {
|
|
182
|
-
type =
|
|
180
|
+
type = FileType.Unknown;
|
|
183
181
|
}
|
|
184
182
|
// Always signal symbolic link as file type additionally
|
|
185
183
|
if (symbolicLink) {
|
|
186
|
-
type |=
|
|
184
|
+
type |= FileType.SymbolicLink;
|
|
187
185
|
}
|
|
188
186
|
return type;
|
|
189
187
|
}
|
|
@@ -192,15 +190,15 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
192
190
|
async readFile(resource) {
|
|
193
191
|
try {
|
|
194
192
|
const filePath = this.toFilePath(resource);
|
|
195
|
-
return await
|
|
193
|
+
return await promisify(readFile)(filePath);
|
|
196
194
|
}
|
|
197
195
|
catch (error) {
|
|
198
196
|
throw this.toFileSystemProviderError(error);
|
|
199
197
|
}
|
|
200
198
|
}
|
|
201
199
|
readFileStream(resource, opts, token) {
|
|
202
|
-
const stream =
|
|
203
|
-
|
|
200
|
+
const stream = newWriteableStream(data => BinaryBuffer.concat(data.map(data => BinaryBuffer.wrap(data))).buffer);
|
|
201
|
+
readFileIntoStream(this, resource, stream, data => data.buffer, {
|
|
204
202
|
...opts,
|
|
205
203
|
bufferSize: this.BUFFER_SIZE
|
|
206
204
|
}, token);
|
|
@@ -212,14 +210,14 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
212
210
|
const filePath = this.toFilePath(resource);
|
|
213
211
|
// Validate target unless { create: true, overwrite: true }
|
|
214
212
|
if (!opts.create || !opts.overwrite) {
|
|
215
|
-
const fileExists = await
|
|
213
|
+
const fileExists = await promisify(exists)(filePath);
|
|
216
214
|
if (fileExists) {
|
|
217
215
|
if (!opts.overwrite) {
|
|
218
|
-
throw
|
|
216
|
+
throw createFileSystemProviderError('File already exists', FileSystemProviderErrorCode.FileExists);
|
|
219
217
|
}
|
|
220
218
|
}
|
|
221
219
|
else if (!opts.create) {
|
|
222
|
-
throw
|
|
220
|
+
throw createFileSystemProviderError('File does not exist', FileSystemProviderErrorCode.FileNotFound);
|
|
223
221
|
}
|
|
224
222
|
}
|
|
225
223
|
// Open
|
|
@@ -241,13 +239,13 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
241
239
|
const filePath = this.toFilePath(resource);
|
|
242
240
|
let flags = undefined;
|
|
243
241
|
if (opts.create) {
|
|
244
|
-
if (
|
|
242
|
+
if (isWindows && await promisify(exists)(filePath)) {
|
|
245
243
|
try {
|
|
246
244
|
// On Windows and if the file exists, we use a different strategy of saving the file
|
|
247
245
|
// by first truncating the file and then writing with r+ flag. This helps to save hidden files on Windows
|
|
248
246
|
// (see https://github.com/Microsoft/vscode/issues/931) and prevent removing alternate data streams
|
|
249
247
|
// (see https://github.com/Microsoft/vscode/issues/6363)
|
|
250
|
-
await
|
|
248
|
+
await promisify(truncate)(filePath, 0);
|
|
251
249
|
// After a successful truncate() the flag can be set to 'r+' which will not truncate.
|
|
252
250
|
flags = 'r+';
|
|
253
251
|
}
|
|
@@ -268,7 +266,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
268
266
|
// the file.
|
|
269
267
|
flags = 'r';
|
|
270
268
|
}
|
|
271
|
-
const handle = await
|
|
269
|
+
const handle = await promisify(open)(filePath, flags);
|
|
272
270
|
// remember this handle to track file position of the handle
|
|
273
271
|
// we init the position to 0 since the file descriptor was
|
|
274
272
|
// just created and the position was not moved so far (see
|
|
@@ -293,7 +291,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
293
291
|
// to flush the contents to disk if possible.
|
|
294
292
|
if (this.writeHandles.delete(fd) && this.canFlush) {
|
|
295
293
|
try {
|
|
296
|
-
await
|
|
294
|
+
await promisify(fdatasync)(fd);
|
|
297
295
|
}
|
|
298
296
|
catch (error) {
|
|
299
297
|
// In some exotic setups it is well possible that node fails to sync
|
|
@@ -302,7 +300,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
302
300
|
this.logger.error(error);
|
|
303
301
|
}
|
|
304
302
|
}
|
|
305
|
-
return await
|
|
303
|
+
return await promisify(close)(fd);
|
|
306
304
|
}
|
|
307
305
|
catch (error) {
|
|
308
306
|
throw this.toFileSystemProviderError(error);
|
|
@@ -312,7 +310,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
312
310
|
const normalizedPos = this.normalizePos(fd, pos);
|
|
313
311
|
let bytesRead = null;
|
|
314
312
|
try {
|
|
315
|
-
const result = await
|
|
313
|
+
const result = await promisify(read)(fd, data, offset, length, normalizedPos);
|
|
316
314
|
if (typeof result === 'number') {
|
|
317
315
|
bytesRead = result; // node.d.ts fail
|
|
318
316
|
}
|
|
@@ -367,13 +365,13 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
367
365
|
// we know at this point that the file to write to is truncated and thus empty
|
|
368
366
|
// if the write now fails, the file remains empty. as such we really try hard
|
|
369
367
|
// to ensure the write succeeds by retrying up to three times.
|
|
370
|
-
return
|
|
368
|
+
return retry(() => this.doWrite(fd, pos, data, offset, length), 100 /* ms delay */, 3 /* retries */);
|
|
371
369
|
}
|
|
372
370
|
async doWrite(fd, pos, data, offset, length) {
|
|
373
371
|
const normalizedPos = this.normalizePos(fd, pos);
|
|
374
372
|
let bytesWritten = null;
|
|
375
373
|
try {
|
|
376
|
-
const result = await
|
|
374
|
+
const result = await promisify(write)(fd, data, offset, length, normalizedPos);
|
|
377
375
|
if (typeof result === 'number') {
|
|
378
376
|
bytesWritten = result; // node.d.ts fail
|
|
379
377
|
}
|
|
@@ -393,7 +391,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
393
391
|
// #region Move/Copy/Delete/Create Folder
|
|
394
392
|
async mkdir(resource) {
|
|
395
393
|
try {
|
|
396
|
-
await
|
|
394
|
+
await promisify(mkdir)(this.toFilePath(resource));
|
|
397
395
|
}
|
|
398
396
|
catch (error) {
|
|
399
397
|
throw this.toFileSystemProviderError(error);
|
|
@@ -414,12 +412,12 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
414
412
|
await this.rimraf(filePath);
|
|
415
413
|
}
|
|
416
414
|
else {
|
|
417
|
-
const stat = await
|
|
415
|
+
const stat = await promisify(lstat)(filePath);
|
|
418
416
|
if (stat.isDirectory() && !stat.isSymbolicLink()) {
|
|
419
|
-
await
|
|
417
|
+
await promisify(rmdir)(filePath);
|
|
420
418
|
}
|
|
421
419
|
else {
|
|
422
|
-
await
|
|
420
|
+
await promisify(unlink)(filePath);
|
|
423
421
|
}
|
|
424
422
|
}
|
|
425
423
|
}
|
|
@@ -428,16 +426,16 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
428
426
|
}
|
|
429
427
|
}
|
|
430
428
|
rimraf(path) {
|
|
431
|
-
if (new
|
|
429
|
+
if (new Path(path).isRoot) {
|
|
432
430
|
throw new Error('rimraf - will refuse to recursively delete root');
|
|
433
431
|
}
|
|
434
432
|
return this.rimrafMove(path);
|
|
435
433
|
}
|
|
436
434
|
async rimrafMove(path) {
|
|
437
435
|
try {
|
|
438
|
-
const pathInTemp =
|
|
436
|
+
const pathInTemp = join(os.tmpdir(), generateUuid());
|
|
439
437
|
try {
|
|
440
|
-
await
|
|
438
|
+
await promisify(rename)(path, pathInTemp);
|
|
441
439
|
}
|
|
442
440
|
catch (error) {
|
|
443
441
|
return this.rimrafUnlink(path); // if rename fails, delete without tmp dir
|
|
@@ -455,22 +453,22 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
455
453
|
}
|
|
456
454
|
async rimrafUnlink(path) {
|
|
457
455
|
try {
|
|
458
|
-
const stat = await
|
|
456
|
+
const stat = await promisify(lstat)(path);
|
|
459
457
|
// Folder delete (recursive) - NOT for symbolic links though!
|
|
460
458
|
if (stat.isDirectory() && !stat.isSymbolicLink()) {
|
|
461
459
|
// Children
|
|
462
|
-
const children = await
|
|
463
|
-
await Promise.all(children.map(child => this.rimrafUnlink(
|
|
460
|
+
const children = await promisify(readdir)(path);
|
|
461
|
+
await Promise.all(children.map(child => this.rimrafUnlink(join(path, child))));
|
|
464
462
|
// Folder
|
|
465
|
-
await
|
|
463
|
+
await promisify(rmdir)(path);
|
|
466
464
|
}
|
|
467
465
|
else {
|
|
468
466
|
// chmod as needed to allow for unlink
|
|
469
467
|
const mode = stat.mode;
|
|
470
468
|
if (!(mode & 128)) { // 128 === 0200
|
|
471
|
-
await
|
|
469
|
+
await promisify(chmod)(path, mode | 128);
|
|
472
470
|
}
|
|
473
|
-
return
|
|
471
|
+
return promisify(unlink)(path);
|
|
474
472
|
}
|
|
475
473
|
}
|
|
476
474
|
catch (error) {
|
|
@@ -495,7 +493,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
495
493
|
// rewrite some typical errors that can happen especially around symlinks
|
|
496
494
|
// to something the user can better understand
|
|
497
495
|
if (error.code === 'EINVAL' || error.code === 'EBUSY' || error.code === 'ENAMETOOLONG') {
|
|
498
|
-
error = new Error(`Unable to move '${
|
|
496
|
+
error = new Error(`Unable to move '${basename(fromFilePath)}' into '${basename(dirname(toFilePath))}' (${error.toString()}).`);
|
|
499
497
|
}
|
|
500
498
|
throw this.toFileSystemProviderError(error);
|
|
501
499
|
}
|
|
@@ -505,21 +503,21 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
505
503
|
return Promise.resolve();
|
|
506
504
|
}
|
|
507
505
|
async function updateMtime(path) {
|
|
508
|
-
const stat = await
|
|
506
|
+
const stat = await promisify(lstat)(path);
|
|
509
507
|
if (stat.isDirectory() || stat.isSymbolicLink()) {
|
|
510
508
|
return Promise.resolve(); // only for files
|
|
511
509
|
}
|
|
512
|
-
const fd = await
|
|
510
|
+
const fd = await promisify(open)(path, 'a');
|
|
513
511
|
try {
|
|
514
|
-
await
|
|
512
|
+
await promisify(futimes)(fd, stat.atime, new Date());
|
|
515
513
|
}
|
|
516
514
|
catch (error) {
|
|
517
515
|
// ignore
|
|
518
516
|
}
|
|
519
|
-
return
|
|
517
|
+
return promisify(close)(fd);
|
|
520
518
|
}
|
|
521
519
|
try {
|
|
522
|
-
await
|
|
520
|
+
await promisify(rename)(source, target);
|
|
523
521
|
await updateMtime(target);
|
|
524
522
|
}
|
|
525
523
|
catch (error) {
|
|
@@ -557,7 +555,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
557
555
|
// rewrite some typical errors that can happen especially around symlinks
|
|
558
556
|
// to something the user can better understand
|
|
559
557
|
if (error.code === 'EINVAL' || error.code === 'EBUSY' || error.code === 'ENAMETOOLONG') {
|
|
560
|
-
error = new Error(`Unable to copy '${
|
|
558
|
+
error = new Error(`Unable to copy '${basename(fromFilePath)}' into '${basename(dirname(toFilePath))}' (${error.toString()}).`);
|
|
561
559
|
}
|
|
562
560
|
throw this.toFileSystemProviderError(error);
|
|
563
561
|
}
|
|
@@ -571,12 +569,12 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
571
569
|
isSameResourceWithDifferentPathCase = fromFilePath.toLowerCase() === toFilePath.toLowerCase();
|
|
572
570
|
}
|
|
573
571
|
if (isSameResourceWithDifferentPathCase && mode === 'copy') {
|
|
574
|
-
throw
|
|
572
|
+
throw createFileSystemProviderError("'File cannot be copied to same path with different path case", FileSystemProviderErrorCode.FileExists);
|
|
575
573
|
}
|
|
576
574
|
// handle existing target (unless this is a case change)
|
|
577
|
-
if (!isSameResourceWithDifferentPathCase && await
|
|
575
|
+
if (!isSameResourceWithDifferentPathCase && await promisify(exists)(toFilePath)) {
|
|
578
576
|
if (!overwrite) {
|
|
579
|
-
throw
|
|
577
|
+
throw createFileSystemProviderError('File at target already exists', FileSystemProviderErrorCode.FileExists);
|
|
580
578
|
}
|
|
581
579
|
// Delete target
|
|
582
580
|
await this.delete(to, { recursive: true, useTrash: false });
|
|
@@ -584,7 +582,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
584
582
|
}
|
|
585
583
|
async doCopy(source, target, copiedSourcesIn) {
|
|
586
584
|
const copiedSources = copiedSourcesIn ? copiedSourcesIn : Object.create(null);
|
|
587
|
-
const fileStat = await
|
|
585
|
+
const fileStat = await promisify(stat)(source);
|
|
588
586
|
if (!fileStat.isDirectory()) {
|
|
589
587
|
return this.doCopyFile(source, target, fileStat.mode & 511);
|
|
590
588
|
}
|
|
@@ -595,16 +593,16 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
595
593
|
// Create folder
|
|
596
594
|
await this.mkdirp(target, fileStat.mode & 511);
|
|
597
595
|
// Copy each file recursively
|
|
598
|
-
const files = await
|
|
596
|
+
const files = await promisify(readdir)(source);
|
|
599
597
|
for (let i = 0; i < files.length; i++) {
|
|
600
598
|
const file = files[i];
|
|
601
|
-
await this.doCopy(
|
|
599
|
+
await this.doCopy(join(source, file), join(target, file), copiedSources);
|
|
602
600
|
}
|
|
603
601
|
}
|
|
604
602
|
async mkdirp(path, mode) {
|
|
605
603
|
const mkdir = async () => {
|
|
606
604
|
try {
|
|
607
|
-
await
|
|
605
|
+
await promisify(fs.mkdir)(path, mode);
|
|
608
606
|
}
|
|
609
607
|
catch (error) {
|
|
610
608
|
// ENOENT: a parent folder does not exist yet
|
|
@@ -615,7 +613,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
615
613
|
// return normally in that case if its a folder
|
|
616
614
|
let targetIsFile = false;
|
|
617
615
|
try {
|
|
618
|
-
const fileStat = await
|
|
616
|
+
const fileStat = await promisify(fs.stat)(path);
|
|
619
617
|
targetIsFile = !fileStat.isDirectory();
|
|
620
618
|
}
|
|
621
619
|
catch (statError) {
|
|
@@ -627,7 +625,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
627
625
|
}
|
|
628
626
|
};
|
|
629
627
|
// stop at root
|
|
630
|
-
if (path ===
|
|
628
|
+
if (path === dirname(path)) {
|
|
631
629
|
return;
|
|
632
630
|
}
|
|
633
631
|
try {
|
|
@@ -637,7 +635,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
637
635
|
// ENOENT: a parent folder does not exist yet, continue
|
|
638
636
|
// to create the parent folder and then try again.
|
|
639
637
|
if (error.code === 'ENOENT') {
|
|
640
|
-
await this.mkdirp(
|
|
638
|
+
await this.mkdirp(dirname(path), mode);
|
|
641
639
|
return mkdir();
|
|
642
640
|
}
|
|
643
641
|
// Any other error
|
|
@@ -708,8 +706,8 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
708
706
|
async updateFile(resource, changes, opts) {
|
|
709
707
|
try {
|
|
710
708
|
const content = await this.readFile(resource);
|
|
711
|
-
const decoded = this.encodingService.decode(
|
|
712
|
-
const newContent =
|
|
709
|
+
const decoded = this.encodingService.decode(BinaryBuffer.wrap(content), opts.readEncoding);
|
|
710
|
+
const newContent = TextDocument.update(TextDocument.create('', '', 1, decoded), changes, 2).getText();
|
|
713
711
|
const encoding = await this.encodingService.toResourceEncoding(opts.writeEncoding, {
|
|
714
712
|
overwriteEncoding: opts.overwriteEncoding,
|
|
715
713
|
read: async (length) => {
|
|
@@ -735,61 +733,55 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
735
733
|
}
|
|
736
734
|
// #region Helpers
|
|
737
735
|
toFilePath(resource) {
|
|
738
|
-
return
|
|
736
|
+
return normalize(FileUri.fsPath(resource));
|
|
739
737
|
}
|
|
740
738
|
toFileSystemProviderError(error) {
|
|
741
|
-
if (error instanceof
|
|
739
|
+
if (error instanceof FileSystemProviderError) {
|
|
742
740
|
return error; // avoid double conversion
|
|
743
741
|
}
|
|
744
742
|
let code;
|
|
745
743
|
switch (error.code) {
|
|
746
744
|
case 'ENOENT':
|
|
747
|
-
code =
|
|
745
|
+
code = FileSystemProviderErrorCode.FileNotFound;
|
|
748
746
|
break;
|
|
749
747
|
case 'EISDIR':
|
|
750
|
-
code =
|
|
748
|
+
code = FileSystemProviderErrorCode.FileIsADirectory;
|
|
751
749
|
break;
|
|
752
750
|
case 'ENOTDIR':
|
|
753
|
-
code =
|
|
751
|
+
code = FileSystemProviderErrorCode.FileNotADirectory;
|
|
754
752
|
break;
|
|
755
753
|
case 'EEXIST':
|
|
756
|
-
code =
|
|
754
|
+
code = FileSystemProviderErrorCode.FileExists;
|
|
757
755
|
break;
|
|
758
756
|
case 'EPERM':
|
|
759
757
|
case 'EACCES':
|
|
760
|
-
code =
|
|
758
|
+
code = FileSystemProviderErrorCode.NoPermissions;
|
|
761
759
|
break;
|
|
762
760
|
default:
|
|
763
|
-
code =
|
|
761
|
+
code = FileSystemProviderErrorCode.Unknown;
|
|
764
762
|
}
|
|
765
|
-
return
|
|
763
|
+
return createFileSystemProviderError(error, code);
|
|
766
764
|
}
|
|
767
765
|
// #endregion
|
|
768
766
|
dispose() {
|
|
769
767
|
this.toDispose.dispose();
|
|
770
768
|
}
|
|
771
769
|
};
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
(0, inversify_1.inject)(filesystem_watcher_protocol_1.FileSystemWatcherServer),
|
|
775
|
-
tslib_1.__metadata("design:type", Object)
|
|
770
|
+
__decorate([
|
|
771
|
+
inject(FileSystemWatcherServer)
|
|
776
772
|
], DiskFileSystemProvider.prototype, "watcher", void 0);
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
tslib_1.__metadata("design:type", encoding_service_1.EncodingService)
|
|
773
|
+
__decorate([
|
|
774
|
+
inject(EncodingService)
|
|
780
775
|
], DiskFileSystemProvider.prototype, "encodingService", void 0);
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
tslib_1.__metadata("design:type", Object)
|
|
776
|
+
__decorate([
|
|
777
|
+
inject(ILogger),
|
|
778
|
+
named('filesystem:DiskFileSystemProvider')
|
|
785
779
|
], DiskFileSystemProvider.prototype, "logger", void 0);
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
tslib_1.__metadata("design:type", Function),
|
|
789
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
790
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
780
|
+
__decorate([
|
|
781
|
+
postConstruct()
|
|
791
782
|
], DiskFileSystemProvider.prototype, "init", null);
|
|
792
|
-
|
|
793
|
-
|
|
783
|
+
DiskFileSystemProvider = __decorate([
|
|
784
|
+
injectable()
|
|
794
785
|
], DiskFileSystemProvider);
|
|
786
|
+
export { DiskFileSystemProvider };
|
|
795
787
|
//# sourceMappingURL=disk-file-system-provider.js.map
|