@theia/filesystem 1.77.0-next.0 → 1.77.0-next.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/breadcrumbs/filepath-breadcrumb.js +4 -8
- package/lib/browser/breadcrumbs/filepath-breadcrumb.js.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js +18 -25
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts +5 -5
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js +27 -33
- package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js.map +1 -1
- package/lib/browser/download/file-download-command-contribution.d.ts +1 -1
- package/lib/browser/download/file-download-command-contribution.d.ts.map +1 -1
- package/lib/browser/download/file-download-command-contribution.js +28 -33
- package/lib/browser/download/file-download-command-contribution.js.map +1 -1
- package/lib/browser/download/file-download-frontend-module.js +8 -10
- package/lib/browser/download/file-download-frontend-module.js.map +1 -1
- package/lib/browser/download/file-download-service.d.ts +1 -1
- package/lib/browser/download/file-download-service.d.ts.map +1 -1
- package/lib/browser/download/file-download-service.js +19 -25
- package/lib/browser/download/file-download-service.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-container.d.ts +1 -1
- package/lib/browser/file-dialog/file-dialog-container.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-container.js +25 -30
- package/lib/browser/file-dialog/file-dialog-container.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js +13 -21
- package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-model.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-model.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-model.js +20 -27
- package/lib/browser/file-dialog/file-dialog-model.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-module.js +21 -23
- package/lib/browser/file-dialog/file-dialog-module.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-service.d.ts +4 -4
- package/lib/browser/file-dialog/file-dialog-service.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-service.js +29 -38
- package/lib/browser/file-dialog/file-dialog-service.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts +3 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js +17 -22
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts +2 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.d.ts.map +1 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js +35 -0
- package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.spec.js.map +1 -0
- package/lib/browser/file-dialog/file-dialog-tree.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-tree.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-tree.js +8 -11
- package/lib/browser/file-dialog/file-dialog-tree.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog-widget.d.ts +2 -2
- package/lib/browser/file-dialog/file-dialog-widget.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog-widget.js +18 -23
- package/lib/browser/file-dialog/file-dialog-widget.js.map +1 -1
- package/lib/browser/file-dialog/file-dialog.d.ts +11 -6
- package/lib/browser/file-dialog/file-dialog.d.ts.map +1 -1
- package/lib/browser/file-dialog/file-dialog.js +109 -126
- package/lib/browser/file-dialog/file-dialog.js.map +1 -1
- package/lib/browser/file-dialog/index.d.ts +4 -4
- package/lib/browser/file-dialog/index.d.ts.map +1 -1
- package/lib/browser/file-dialog/index.js +4 -7
- package/lib/browser/file-dialog/index.js.map +1 -1
- package/lib/browser/file-resource.d.ts +2 -2
- package/lib/browser/file-resource.d.ts.map +1 -1
- package/lib/browser/file-resource.js +64 -71
- package/lib/browser/file-resource.js.map +1 -1
- package/lib/browser/file-resource.spec.js +39 -41
- package/lib/browser/file-resource.spec.js.map +1 -1
- package/lib/browser/file-selection.d.ts +1 -1
- package/lib/browser/file-selection.d.ts.map +1 -1
- package/lib/browser/file-selection.js +7 -10
- package/lib/browser/file-selection.js.map +1 -1
- package/lib/browser/file-service-activation.spec.d.ts +2 -0
- package/lib/browser/file-service-activation.spec.d.ts.map +1 -0
- package/lib/browser/file-service-activation.spec.js +79 -0
- package/lib/browser/file-service-activation.spec.js.map +1 -0
- package/lib/browser/file-service-copy.spec.d.ts +2 -0
- package/lib/browser/file-service-copy.spec.d.ts.map +1 -0
- package/lib/browser/file-service-copy.spec.js +193 -0
- package/lib/browser/file-service-copy.spec.js.map +1 -0
- package/lib/browser/file-service-watcher.spec.js +199 -201
- package/lib/browser/file-service-watcher.spec.js.map +1 -1
- package/lib/browser/file-service.d.ts +4 -4
- package/lib/browser/file-service.d.ts.map +1 -1
- package/lib/browser/file-service.js +179 -182
- package/lib/browser/file-service.js.map +1 -1
- package/lib/browser/file-tree/file-tree-container.js +12 -15
- package/lib/browser/file-tree/file-tree-container.js.map +1 -1
- package/lib/browser/file-tree/file-tree-decorator-adapter.js +23 -31
- package/lib/browser/file-tree/file-tree-decorator-adapter.js.map +1 -1
- package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js +26 -28
- package/lib/browser/file-tree/file-tree-decorator-adapter.spec.js.map +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.d.ts +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-label-provider.js +13 -18
- package/lib/browser/file-tree/file-tree-label-provider.js.map +1 -1
- package/lib/browser/file-tree/file-tree-model.d.ts +4 -4
- package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-model.js +42 -52
- package/lib/browser/file-tree/file-tree-model.js.map +1 -1
- package/lib/browser/file-tree/file-tree-widget.d.ts +3 -3
- package/lib/browser/file-tree/file-tree-widget.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-widget.js +63 -71
- package/lib/browser/file-tree/file-tree-widget.js.map +1 -1
- package/lib/browser/file-tree/file-tree.d.ts +3 -3
- package/lib/browser/file-tree/file-tree.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree.js +26 -31
- package/lib/browser/file-tree/file-tree.js.map +1 -1
- package/lib/browser/file-tree/index.d.ts +6 -6
- package/lib/browser/file-tree/index.d.ts.map +1 -1
- package/lib/browser/file-tree/index.js +6 -9
- package/lib/browser/file-tree/index.js.map +1 -1
- package/lib/browser/filesystem-frontend-contribution.d.ts +6 -6
- package/lib/browser/filesystem-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/filesystem-frontend-contribution.js +75 -90
- package/lib/browser/filesystem-frontend-contribution.js.map +1 -1
- package/lib/browser/filesystem-frontend-module.js +47 -50
- package/lib/browser/filesystem-frontend-module.js.map +1 -1
- package/lib/browser/filesystem-saveable-service.d.ts +2 -2
- package/lib/browser/filesystem-saveable-service.d.ts.map +1 -1
- package/lib/browser/filesystem-saveable-service.js +35 -44
- package/lib/browser/filesystem-saveable-service.js.map +1 -1
- package/lib/browser/filesystem-watcher-error-handler.js +13 -18
- package/lib/browser/filesystem-watcher-error-handler.js.map +1 -1
- package/lib/browser/index.d.ts +4 -4
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +4 -7
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/location/index.d.ts +2 -2
- package/lib/browser/location/index.d.ts.map +1 -1
- package/lib/browser/location/index.js +2 -5
- package/lib/browser/location/index.js.map +1 -1
- package/lib/browser/location/location-renderer.d.ts +3 -3
- package/lib/browser/location/location-renderer.d.ts.map +1 -1
- package/lib/browser/location/location-renderer.js +42 -51
- package/lib/browser/location/location-renderer.js.map +1 -1
- package/lib/browser/location/location-renderer.spec.js +61 -63
- package/lib/browser/location/location-renderer.spec.js.map +1 -1
- package/lib/browser/location/location-service.js +1 -2
- package/lib/browser/location/location-service.js.map +1 -1
- package/lib/browser/remote-file-service-contribution.d.ts +2 -2
- package/lib/browser/remote-file-service-contribution.d.ts.map +1 -1
- package/lib/browser/remote-file-service-contribution.js +8 -12
- package/lib/browser/remote-file-service-contribution.js.map +1 -1
- package/lib/browser/upload/file-upload-service-impl.d.ts +3 -3
- package/lib/browser/upload/file-upload-service-impl.d.ts.map +1 -1
- package/lib/browser/upload/file-upload-service-impl.js +55 -64
- package/lib/browser/upload/file-upload-service-impl.js.map +1 -1
- package/lib/browser/vscode-file-service-contribution.d.ts +2 -2
- package/lib/browser/vscode-file-service-contribution.d.ts.map +1 -1
- package/lib/browser/vscode-file-service-contribution.js +23 -28
- package/lib/browser/vscode-file-service-contribution.js.map +1 -1
- package/lib/browser-only/browser-only-filesystem-frontend-module.js +21 -23
- package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.d.ts +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.d.ts.map +1 -1
- package/lib/browser-only/browser-only-filesystem-provider-server.js +10 -13
- package/lib/browser-only/browser-only-filesystem-provider-server.js.map +1 -1
- package/lib/browser-only/download/file-download-command-contribution.d.ts +1 -1
- package/lib/browser-only/download/file-download-command-contribution.d.ts.map +1 -1
- package/lib/browser-only/download/file-download-command-contribution.js +14 -19
- package/lib/browser-only/download/file-download-command-contribution.js.map +1 -1
- package/lib/browser-only/download/file-download-frontend-module.js +8 -10
- package/lib/browser-only/download/file-download-frontend-module.js.map +1 -1
- package/lib/browser-only/download/file-download-service.d.ts +3 -3
- package/lib/browser-only/download/file-download-service.d.ts.map +1 -1
- package/lib/browser-only/download/file-download-service.js +26 -33
- package/lib/browser-only/download/file-download-service.js.map +1 -1
- package/lib/browser-only/file-search.d.ts.map +1 -1
- package/lib/browser-only/file-search.js +9 -14
- package/lib/browser-only/file-search.js.map +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.d.ts +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -1
- package/lib/browser-only/opfs-filesystem-initialization.js +6 -9
- package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -1
- package/lib/browser-only/opfs-filesystem-provider.d.ts +2 -2
- package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -1
- package/lib/browser-only/opfs-filesystem-provider.js +60 -68
- package/lib/browser-only/opfs-filesystem-provider.js.map +1 -1
- package/lib/browser-only/upload/file-upload-service-impl.d.ts +3 -3
- package/lib/browser-only/upload/file-upload-service-impl.d.ts.map +1 -1
- package/lib/browser-only/upload/file-upload-service-impl.js +51 -60
- package/lib/browser-only/upload/file-upload-service-impl.js.map +1 -1
- package/lib/common/delegating-file-system-provider.d.ts +1 -1
- package/lib/common/delegating-file-system-provider.d.ts.map +1 -1
- package/lib/common/delegating-file-system-provider.js +18 -22
- package/lib/common/delegating-file-system-provider.js.map +1 -1
- package/lib/common/download/file-download.js +5 -8
- package/lib/common/download/file-download.js.map +1 -1
- package/lib/common/file-upload.js +1 -4
- package/lib/common/file-upload.js.map +1 -1
- package/lib/common/files.js +38 -58
- package/lib/common/files.js.map +1 -1
- package/lib/common/files.spec.js +22 -24
- package/lib/common/files.spec.js.map +1 -1
- package/lib/common/filesystem-preferences.js +39 -44
- package/lib/common/filesystem-preferences.js.map +1 -1
- package/lib/common/filesystem-utils.d.ts +1 -1
- package/lib/common/filesystem-utils.d.ts.map +1 -1
- package/lib/common/filesystem-utils.js +2 -5
- package/lib/common/filesystem-utils.js.map +1 -1
- package/lib/common/filesystem-utils.spec.js +227 -229
- package/lib/common/filesystem-utils.spec.js.map +1 -1
- package/lib/common/filesystem-watcher-protocol.d.ts +5 -1
- package/lib/common/filesystem-watcher-protocol.d.ts.map +1 -1
- package/lib/common/filesystem-watcher-protocol.js +2 -5
- package/lib/common/filesystem-watcher-protocol.js.map +1 -1
- package/lib/common/filesystem.js +2 -5
- package/lib/common/filesystem.js.map +1 -1
- package/lib/common/index.d.ts +3 -3
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +3 -6
- package/lib/common/index.js.map +1 -1
- package/lib/common/io.d.ts +2 -2
- package/lib/common/io.d.ts.map +1 -1
- package/lib/common/io.js +10 -13
- package/lib/common/io.js.map +1 -1
- package/lib/common/remote-file-system-provider.d.ts +1 -1
- package/lib/common/remote-file-system-provider.d.ts.map +1 -1
- package/lib/common/remote-file-system-provider.js +81 -93
- package/lib/common/remote-file-system-provider.js.map +1 -1
- package/lib/common/upload/file-upload.js +1 -4
- package/lib/common/upload/file-upload.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-module.js +6 -8
- package/lib/electron-browser/file-dialog/electron-file-dialog-module.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts +3 -3
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js +20 -24
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.js.map +1 -1
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts +2 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.d.ts.map +1 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js +46 -0
- package/lib/electron-browser/file-dialog/electron-file-dialog-service.spec.js.map +1 -0
- package/lib/electron-browser/preload.js +6 -9
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-common/electron-api.js +2 -5
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.js +15 -18
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-module.js +6 -8
- package/lib/electron-main/electron-main-module.js.map +1 -1
- package/lib/node/disk-file-system-provider.d.ts +2 -2
- package/lib/node/disk-file-system-provider.d.ts.map +1 -1
- package/lib/node/disk-file-system-provider.js +116 -121
- package/lib/node/disk-file-system-provider.js.map +1 -1
- package/lib/node/disk-file-system-provider.spec.js +77 -54
- package/lib/node/disk-file-system-provider.spec.js.map +1 -1
- package/lib/node/download/directory-archiver.js +13 -16
- package/lib/node/download/directory-archiver.js.map +1 -1
- package/lib/node/download/directory-archiver.spec.js +20 -22
- package/lib/node/download/directory-archiver.spec.js.map +1 -1
- package/lib/node/download/file-download-backend-module.js +14 -16
- package/lib/node/download/file-download-backend-module.js.map +1 -1
- package/lib/node/download/file-download-cache.js +12 -16
- package/lib/node/download/file-download-cache.js.map +1 -1
- package/lib/node/download/file-download-endpoint.d.ts +1 -1
- package/lib/node/download/file-download-endpoint.d.ts.map +1 -1
- package/lib/node/download/file-download-endpoint.js +25 -31
- package/lib/node/download/file-download-endpoint.js.map +1 -1
- package/lib/node/download/file-download-handler.d.ts +2 -2
- package/lib/node/download/file-download-handler.d.ts.map +1 -1
- package/lib/node/download/file-download-handler.js +70 -77
- package/lib/node/download/file-download-handler.js.map +1 -1
- package/lib/node/download/test/mock-directory-archiver.d.ts +1 -1
- package/lib/node/download/test/mock-directory-archiver.d.ts.map +1 -1
- package/lib/node/download/test/mock-directory-archiver.js +2 -6
- package/lib/node/download/test/mock-directory-archiver.js.map +1 -1
- package/lib/node/file-change-collection.d.ts +1 -1
- package/lib/node/file-change-collection.d.ts.map +1 -1
- package/lib/node/file-change-collection.js +1 -5
- package/lib/node/file-change-collection.js.map +1 -1
- package/lib/node/file-change-collection.spec.js +5 -7
- package/lib/node/file-change-collection.spec.js.map +1 -1
- package/lib/node/filesystem-backend-module.d.ts +3 -3
- package/lib/node/filesystem-backend-module.d.ts.map +1 -1
- package/lib/node/filesystem-backend-module.js +57 -62
- package/lib/node/filesystem-backend-module.js.map +1 -1
- package/lib/node/filesystem-watcher-client.d.ts +2 -2
- package/lib/node/filesystem-watcher-client.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-client.js +11 -16
- package/lib/node/filesystem-watcher-client.js.map +1 -1
- package/lib/node/filesystem-watcher-dispatcher.d.ts +1 -1
- package/lib/node/filesystem-watcher-dispatcher.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-dispatcher.js +9 -13
- package/lib/node/filesystem-watcher-dispatcher.js.map +1 -1
- package/lib/node/filesystem-watcher-service-impl.d.ts +30 -0
- package/lib/node/filesystem-watcher-service-impl.d.ts.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.js +88 -0
- package/lib/node/filesystem-watcher-service-impl.js.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.spec.d.ts +2 -0
- package/lib/node/filesystem-watcher-service-impl.spec.d.ts.map +1 -0
- package/lib/node/filesystem-watcher-service-impl.spec.js +199 -0
- package/lib/node/filesystem-watcher-service-impl.spec.js.map +1 -0
- package/lib/node/filesystem-watcher.d.ts +93 -0
- package/lib/node/filesystem-watcher.d.ts.map +1 -0
- package/lib/node/filesystem-watcher.js +129 -0
- package/lib/node/filesystem-watcher.js.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts +175 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.js +574 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.js.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts +2 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js +1281 -0
- package/lib/node/nodejs-watcher/node-directory-watcher.spec.js.map +1 -0
- package/lib/node/nodejs-watcher/watch-request-router.d.ts +63 -0
- package/lib/node/nodejs-watcher/watch-request-router.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/watch-request-router.js +178 -0
- package/lib/node/nodejs-watcher/watch-request-router.js.map +1 -0
- package/lib/node/nodejs-watcher/watcher-host.d.ts +50 -0
- package/lib/node/nodejs-watcher/watcher-host.d.ts.map +1 -0
- package/lib/node/nodejs-watcher/watcher-host.js +94 -0
- package/lib/node/nodejs-watcher/watcher-host.js.map +1 -0
- package/lib/node/parcel-watcher/index.js +6 -8
- package/lib/node/parcel-watcher/index.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts +14 -194
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-service.js +5 -426
- package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js +23 -25
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-options.js +1 -4
- package/lib/node/parcel-watcher/parcel-options.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js +12 -16
- package/lib/node/parcel-watcher/parcel-watcher-exclude.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js +11 -15
- package/lib/node/parcel-watcher/parcel-watcher-retry.spec.js.map +1 -1
- package/lib/node/parcel-watcher/parcel-watcher.d.ts +165 -0
- package/lib/node/parcel-watcher/parcel-watcher.d.ts.map +1 -0
- package/lib/node/parcel-watcher/parcel-watcher.js +366 -0
- package/lib/node/parcel-watcher/parcel-watcher.js.map +1 -0
- package/lib/node/test/watcher-test-helper.d.ts +21 -0
- package/lib/node/test/watcher-test-helper.d.ts.map +1 -0
- package/lib/node/test/watcher-test-helper.js +51 -0
- package/lib/node/test/watcher-test-helper.js.map +1 -0
- package/lib/node/upload/node-file-upload-service.d.ts +1 -1
- package/lib/node/upload/node-file-upload-service.d.ts.map +1 -1
- package/lib/node/upload/node-file-upload-service.js +20 -25
- package/lib/node/upload/node-file-upload-service.js.map +1 -1
- package/lib/node/upload/node-file-upload-service.spec.js +21 -23
- package/lib/node/upload/node-file-upload-service.spec.js.map +1 -1
- package/package.json +21 -7
- package/src/browser/breadcrumbs/filepath-breadcrumb.ts +1 -1
- package/src/browser/breadcrumbs/filepath-breadcrumbs-container.ts +1 -1
- package/src/browser/breadcrumbs/filepath-breadcrumbs-contribution.ts +5 -5
- package/src/browser/download/file-download-command-contribution.ts +1 -1
- package/src/browser/download/file-download-frontend-module.ts +3 -3
- package/src/browser/download/file-download-service.ts +1 -2
- package/src/browser/file-dialog/file-dialog-container.ts +5 -5
- package/src/browser/file-dialog/file-dialog-hidden-files-renderer.tsx +1 -1
- package/src/browser/file-dialog/file-dialog-model.ts +2 -2
- package/src/browser/file-dialog/file-dialog-module.ts +5 -5
- package/src/browser/file-dialog/file-dialog-service.ts +4 -4
- package/src/browser/file-dialog/file-dialog-tree-filters-renderer.spec.ts +43 -0
- package/src/browser/file-dialog/file-dialog-tree-filters-renderer.tsx +4 -2
- package/src/browser/file-dialog/file-dialog-tree.ts +2 -2
- package/src/browser/file-dialog/file-dialog-widget.ts +2 -2
- package/src/browser/file-dialog/file-dialog.ts +17 -7
- package/src/browser/file-dialog/index.ts +4 -4
- package/src/browser/file-resource.spec.ts +3 -3
- package/src/browser/file-resource.ts +3 -3
- package/src/browser/file-selection.ts +1 -1
- package/src/browser/file-service-activation.spec.ts +93 -0
- package/src/browser/file-service-copy.spec.ts +226 -0
- package/src/browser/file-service-watcher.spec.ts +2 -2
- package/src/browser/file-service.ts +22 -11
- package/src/browser/file-tree/file-tree-container.ts +3 -3
- package/src/browser/file-tree/file-tree-decorator-adapter.spec.ts +1 -1
- package/src/browser/file-tree/file-tree-decorator-adapter.ts +1 -1
- package/src/browser/file-tree/file-tree-label-provider.ts +1 -1
- package/src/browser/file-tree/file-tree-model.ts +5 -5
- package/src/browser/file-tree/file-tree-widget.tsx +4 -4
- package/src/browser/file-tree/file-tree.ts +3 -3
- package/src/browser/file-tree/index.ts +6 -6
- package/src/browser/filesystem-frontend-contribution.ts +6 -6
- package/src/browser/filesystem-frontend-module.ts +14 -14
- package/src/browser/filesystem-saveable-service.ts +2 -2
- package/src/browser/index.ts +4 -4
- package/src/browser/location/index.ts +2 -2
- package/src/browser/location/location-renderer.spec.ts +3 -3
- package/src/browser/location/location-renderer.tsx +3 -3
- package/src/browser/remote-file-service-contribution.ts +2 -2
- package/src/browser/upload/file-upload-service-impl.ts +5 -5
- package/src/browser/vscode-file-service-contribution.ts +2 -2
- package/src/browser-only/browser-only-filesystem-frontend-module.ts +7 -7
- package/src/browser-only/browser-only-filesystem-provider-server.ts +1 -1
- package/src/browser-only/download/file-download-command-contribution.ts +2 -2
- package/src/browser-only/download/file-download-frontend-module.ts +3 -3
- package/src/browser-only/download/file-download-service.ts +3 -3
- package/src/browser-only/file-search.ts +2 -1
- package/src/browser-only/opfs-filesystem-initialization.ts +1 -1
- package/src/browser-only/opfs-filesystem-provider.ts +3 -3
- package/src/browser-only/upload/file-upload-service-impl.ts +4 -4
- package/src/common/delegating-file-system-provider.ts +1 -1
- package/src/common/files.spec.ts +1 -1
- package/src/common/filesystem-utils.spec.ts +2 -2
- package/src/common/filesystem-utils.ts +1 -1
- package/src/common/filesystem-watcher-protocol.ts +5 -1
- package/src/common/index.ts +3 -3
- package/src/common/io.ts +2 -2
- package/src/common/remote-file-system-provider.ts +1 -1
- package/src/electron-browser/file-dialog/electron-file-dialog-module.ts +2 -2
- package/src/electron-browser/file-dialog/electron-file-dialog-service.spec.ts +57 -0
- package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +5 -5
- package/src/electron-browser/preload.ts +1 -1
- package/src/electron-main/electron-api-main.ts +1 -1
- package/src/electron-main/electron-main-module.ts +1 -1
- package/src/node/disk-file-system-provider.spec.ts +32 -3
- package/src/node/disk-file-system-provider.ts +12 -8
- package/src/node/download/directory-archiver.spec.ts +1 -1
- package/src/node/download/file-download-backend-module.ts +4 -4
- package/src/node/download/file-download-cache.ts +1 -1
- package/src/node/download/file-download-endpoint.ts +4 -3
- package/src/node/download/file-download-handler.ts +3 -4
- package/src/node/download/test/mock-directory-archiver.ts +1 -1
- package/src/node/file-change-collection.spec.ts +2 -2
- package/src/node/file-change-collection.ts +1 -1
- package/src/node/filesystem-backend-module.ts +15 -14
- package/src/node/filesystem-watcher-client.ts +2 -2
- package/src/node/filesystem-watcher-dispatcher.ts +1 -1
- package/src/node/filesystem-watcher-service-impl.spec.ts +272 -0
- package/src/node/filesystem-watcher-service-impl.ts +109 -0
- package/src/node/filesystem-watcher.ts +197 -0
- package/src/node/nodejs-watcher/node-directory-watcher.spec.ts +1594 -0
- package/src/node/nodejs-watcher/node-directory-watcher.ts +664 -0
- package/src/node/nodejs-watcher/watch-request-router.ts +224 -0
- package/src/node/nodejs-watcher/watcher-host.ts +126 -0
- package/src/node/parcel-watcher/index.ts +3 -3
- package/src/node/parcel-watcher/parcel-filesystem-service.ts +14 -500
- package/src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts +5 -5
- package/src/node/parcel-watcher/parcel-watcher-exclude.spec.ts +7 -11
- package/src/node/parcel-watcher/parcel-watcher-retry.spec.ts +6 -8
- package/src/node/parcel-watcher/parcel-watcher.ts +433 -0
- package/src/node/test/watcher-test-helper.ts +58 -0
- package/src/node/upload/node-file-upload-service.spec.ts +1 -1
- package/src/node/upload/node-file-upload-service.ts +6 -6
|
@@ -1,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,22 +426,24 @@ 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
|
|
444
442
|
}
|
|
445
443
|
// Delete but do not return as promise
|
|
446
|
-
this.rimrafUnlink(pathInTemp)
|
|
444
|
+
this.rimrafUnlink(pathInTemp).catch(error => {
|
|
445
|
+
this.logger.warn(`Failed to clean up temporary rimraf folder '${pathInTemp}':`, error);
|
|
446
|
+
});
|
|
447
447
|
}
|
|
448
448
|
catch (error) {
|
|
449
449
|
if (error.code !== 'ENOENT') {
|
|
@@ -453,22 +453,22 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
453
453
|
}
|
|
454
454
|
async rimrafUnlink(path) {
|
|
455
455
|
try {
|
|
456
|
-
const stat = await
|
|
456
|
+
const stat = await promisify(lstat)(path);
|
|
457
457
|
// Folder delete (recursive) - NOT for symbolic links though!
|
|
458
458
|
if (stat.isDirectory() && !stat.isSymbolicLink()) {
|
|
459
459
|
// Children
|
|
460
|
-
const children = await
|
|
461
|
-
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))));
|
|
462
462
|
// Folder
|
|
463
|
-
await
|
|
463
|
+
await promisify(rmdir)(path);
|
|
464
464
|
}
|
|
465
465
|
else {
|
|
466
466
|
// chmod as needed to allow for unlink
|
|
467
467
|
const mode = stat.mode;
|
|
468
468
|
if (!(mode & 128)) { // 128 === 0200
|
|
469
|
-
await
|
|
469
|
+
await promisify(chmod)(path, mode | 128);
|
|
470
470
|
}
|
|
471
|
-
return
|
|
471
|
+
return promisify(unlink)(path);
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
catch (error) {
|
|
@@ -493,7 +493,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
493
493
|
// rewrite some typical errors that can happen especially around symlinks
|
|
494
494
|
// to something the user can better understand
|
|
495
495
|
if (error.code === 'EINVAL' || error.code === 'EBUSY' || error.code === 'ENAMETOOLONG') {
|
|
496
|
-
error = new Error(`Unable to move '${
|
|
496
|
+
error = new Error(`Unable to move '${basename(fromFilePath)}' into '${basename(dirname(toFilePath))}' (${error.toString()}).`);
|
|
497
497
|
}
|
|
498
498
|
throw this.toFileSystemProviderError(error);
|
|
499
499
|
}
|
|
@@ -503,21 +503,21 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
503
503
|
return Promise.resolve();
|
|
504
504
|
}
|
|
505
505
|
async function updateMtime(path) {
|
|
506
|
-
const stat = await
|
|
506
|
+
const stat = await promisify(lstat)(path);
|
|
507
507
|
if (stat.isDirectory() || stat.isSymbolicLink()) {
|
|
508
508
|
return Promise.resolve(); // only for files
|
|
509
509
|
}
|
|
510
|
-
const fd = await
|
|
510
|
+
const fd = await promisify(open)(path, 'a');
|
|
511
511
|
try {
|
|
512
|
-
await
|
|
512
|
+
await promisify(futimes)(fd, stat.atime, new Date());
|
|
513
513
|
}
|
|
514
514
|
catch (error) {
|
|
515
515
|
// ignore
|
|
516
516
|
}
|
|
517
|
-
return
|
|
517
|
+
return promisify(close)(fd);
|
|
518
518
|
}
|
|
519
519
|
try {
|
|
520
|
-
await
|
|
520
|
+
await promisify(rename)(source, target);
|
|
521
521
|
await updateMtime(target);
|
|
522
522
|
}
|
|
523
523
|
catch (error) {
|
|
@@ -555,7 +555,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
555
555
|
// rewrite some typical errors that can happen especially around symlinks
|
|
556
556
|
// to something the user can better understand
|
|
557
557
|
if (error.code === 'EINVAL' || error.code === 'EBUSY' || error.code === 'ENAMETOOLONG') {
|
|
558
|
-
error = new Error(`Unable to copy '${
|
|
558
|
+
error = new Error(`Unable to copy '${basename(fromFilePath)}' into '${basename(dirname(toFilePath))}' (${error.toString()}).`);
|
|
559
559
|
}
|
|
560
560
|
throw this.toFileSystemProviderError(error);
|
|
561
561
|
}
|
|
@@ -569,12 +569,12 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
569
569
|
isSameResourceWithDifferentPathCase = fromFilePath.toLowerCase() === toFilePath.toLowerCase();
|
|
570
570
|
}
|
|
571
571
|
if (isSameResourceWithDifferentPathCase && mode === 'copy') {
|
|
572
|
-
throw
|
|
572
|
+
throw createFileSystemProviderError("'File cannot be copied to same path with different path case", FileSystemProviderErrorCode.FileExists);
|
|
573
573
|
}
|
|
574
574
|
// handle existing target (unless this is a case change)
|
|
575
|
-
if (!isSameResourceWithDifferentPathCase && await
|
|
575
|
+
if (!isSameResourceWithDifferentPathCase && await promisify(exists)(toFilePath)) {
|
|
576
576
|
if (!overwrite) {
|
|
577
|
-
throw
|
|
577
|
+
throw createFileSystemProviderError('File at target already exists', FileSystemProviderErrorCode.FileExists);
|
|
578
578
|
}
|
|
579
579
|
// Delete target
|
|
580
580
|
await this.delete(to, { recursive: true, useTrash: false });
|
|
@@ -582,7 +582,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
582
582
|
}
|
|
583
583
|
async doCopy(source, target, copiedSourcesIn) {
|
|
584
584
|
const copiedSources = copiedSourcesIn ? copiedSourcesIn : Object.create(null);
|
|
585
|
-
const fileStat = await
|
|
585
|
+
const fileStat = await promisify(stat)(source);
|
|
586
586
|
if (!fileStat.isDirectory()) {
|
|
587
587
|
return this.doCopyFile(source, target, fileStat.mode & 511);
|
|
588
588
|
}
|
|
@@ -593,16 +593,16 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
593
593
|
// Create folder
|
|
594
594
|
await this.mkdirp(target, fileStat.mode & 511);
|
|
595
595
|
// Copy each file recursively
|
|
596
|
-
const files = await
|
|
596
|
+
const files = await promisify(readdir)(source);
|
|
597
597
|
for (let i = 0; i < files.length; i++) {
|
|
598
598
|
const file = files[i];
|
|
599
|
-
await this.doCopy(
|
|
599
|
+
await this.doCopy(join(source, file), join(target, file), copiedSources);
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
602
|
async mkdirp(path, mode) {
|
|
603
603
|
const mkdir = async () => {
|
|
604
604
|
try {
|
|
605
|
-
await
|
|
605
|
+
await promisify(fs.mkdir)(path, mode);
|
|
606
606
|
}
|
|
607
607
|
catch (error) {
|
|
608
608
|
// ENOENT: a parent folder does not exist yet
|
|
@@ -613,7 +613,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
613
613
|
// return normally in that case if its a folder
|
|
614
614
|
let targetIsFile = false;
|
|
615
615
|
try {
|
|
616
|
-
const fileStat = await
|
|
616
|
+
const fileStat = await promisify(fs.stat)(path);
|
|
617
617
|
targetIsFile = !fileStat.isDirectory();
|
|
618
618
|
}
|
|
619
619
|
catch (statError) {
|
|
@@ -625,7 +625,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
625
625
|
}
|
|
626
626
|
};
|
|
627
627
|
// stop at root
|
|
628
|
-
if (path ===
|
|
628
|
+
if (path === dirname(path)) {
|
|
629
629
|
return;
|
|
630
630
|
}
|
|
631
631
|
try {
|
|
@@ -635,7 +635,7 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
635
635
|
// ENOENT: a parent folder does not exist yet, continue
|
|
636
636
|
// to create the parent folder and then try again.
|
|
637
637
|
if (error.code === 'ENOENT') {
|
|
638
|
-
await this.mkdirp(
|
|
638
|
+
await this.mkdirp(dirname(path), mode);
|
|
639
639
|
return mkdir();
|
|
640
640
|
}
|
|
641
641
|
// Any other error
|
|
@@ -689,7 +689,8 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
689
689
|
};
|
|
690
690
|
watcherService.watchFileChanges(resource.toString(), {
|
|
691
691
|
// Convert from `files.WatchOptions` to internal `watcher-protocol.WatchOptions`:
|
|
692
|
-
ignored: opts.excludes
|
|
692
|
+
ignored: opts.excludes,
|
|
693
|
+
recursive: opts.recursive
|
|
693
694
|
}).then(watcherId => {
|
|
694
695
|
if (handle.disposed) {
|
|
695
696
|
watcherService.unwatchFileChanges(watcherId);
|
|
@@ -705,8 +706,8 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
705
706
|
async updateFile(resource, changes, opts) {
|
|
706
707
|
try {
|
|
707
708
|
const content = await this.readFile(resource);
|
|
708
|
-
const decoded = this.encodingService.decode(
|
|
709
|
-
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();
|
|
710
711
|
const encoding = await this.encodingService.toResourceEncoding(opts.writeEncoding, {
|
|
711
712
|
overwriteEncoding: opts.overwriteEncoding,
|
|
712
713
|
read: async (length) => {
|
|
@@ -732,61 +733,55 @@ let DiskFileSystemProvider = class DiskFileSystemProvider {
|
|
|
732
733
|
}
|
|
733
734
|
// #region Helpers
|
|
734
735
|
toFilePath(resource) {
|
|
735
|
-
return
|
|
736
|
+
return normalize(FileUri.fsPath(resource));
|
|
736
737
|
}
|
|
737
738
|
toFileSystemProviderError(error) {
|
|
738
|
-
if (error instanceof
|
|
739
|
+
if (error instanceof FileSystemProviderError) {
|
|
739
740
|
return error; // avoid double conversion
|
|
740
741
|
}
|
|
741
742
|
let code;
|
|
742
743
|
switch (error.code) {
|
|
743
744
|
case 'ENOENT':
|
|
744
|
-
code =
|
|
745
|
+
code = FileSystemProviderErrorCode.FileNotFound;
|
|
745
746
|
break;
|
|
746
747
|
case 'EISDIR':
|
|
747
|
-
code =
|
|
748
|
+
code = FileSystemProviderErrorCode.FileIsADirectory;
|
|
748
749
|
break;
|
|
749
750
|
case 'ENOTDIR':
|
|
750
|
-
code =
|
|
751
|
+
code = FileSystemProviderErrorCode.FileNotADirectory;
|
|
751
752
|
break;
|
|
752
753
|
case 'EEXIST':
|
|
753
|
-
code =
|
|
754
|
+
code = FileSystemProviderErrorCode.FileExists;
|
|
754
755
|
break;
|
|
755
756
|
case 'EPERM':
|
|
756
757
|
case 'EACCES':
|
|
757
|
-
code =
|
|
758
|
+
code = FileSystemProviderErrorCode.NoPermissions;
|
|
758
759
|
break;
|
|
759
760
|
default:
|
|
760
|
-
code =
|
|
761
|
+
code = FileSystemProviderErrorCode.Unknown;
|
|
761
762
|
}
|
|
762
|
-
return
|
|
763
|
+
return createFileSystemProviderError(error, code);
|
|
763
764
|
}
|
|
764
765
|
// #endregion
|
|
765
766
|
dispose() {
|
|
766
767
|
this.toDispose.dispose();
|
|
767
768
|
}
|
|
768
769
|
};
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
(0, inversify_1.inject)(filesystem_watcher_protocol_1.FileSystemWatcherServer),
|
|
772
|
-
tslib_1.__metadata("design:type", Object)
|
|
770
|
+
__decorate([
|
|
771
|
+
inject(FileSystemWatcherServer)
|
|
773
772
|
], DiskFileSystemProvider.prototype, "watcher", void 0);
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
tslib_1.__metadata("design:type", encoding_service_1.EncodingService)
|
|
773
|
+
__decorate([
|
|
774
|
+
inject(EncodingService)
|
|
777
775
|
], DiskFileSystemProvider.prototype, "encodingService", void 0);
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
tslib_1.__metadata("design:type", Object)
|
|
776
|
+
__decorate([
|
|
777
|
+
inject(ILogger),
|
|
778
|
+
named('filesystem:DiskFileSystemProvider')
|
|
782
779
|
], DiskFileSystemProvider.prototype, "logger", void 0);
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
tslib_1.__metadata("design:type", Function),
|
|
786
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
787
|
-
tslib_1.__metadata("design:returntype", void 0)
|
|
780
|
+
__decorate([
|
|
781
|
+
postConstruct()
|
|
788
782
|
], DiskFileSystemProvider.prototype, "init", null);
|
|
789
|
-
|
|
790
|
-
|
|
783
|
+
DiskFileSystemProvider = __decorate([
|
|
784
|
+
injectable()
|
|
791
785
|
], DiskFileSystemProvider);
|
|
786
|
+
export { DiskFileSystemProvider };
|
|
792
787
|
//# sourceMappingURL=disk-file-system-provider.js.map
|