@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) 2026 Ehab Younes and others.
|
|
4
3
|
//
|
|
@@ -14,26 +13,24 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const node_directory_watcher_1 = require("./node-directory-watcher");
|
|
29
|
-
const watcher_host_1 = require("./watcher-host");
|
|
16
|
+
import * as assert from 'assert';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import * as temp from 'temp';
|
|
19
|
+
import * as fs from '@theia/core/shared/fs-extra';
|
|
20
|
+
import { EventEmitter } from 'events';
|
|
21
|
+
import { Deferred, wait } from '@theia/core/lib/common/promise-util';
|
|
22
|
+
import { isWindows } from '@theia/core';
|
|
23
|
+
import { FileUri } from '@theia/core/lib/node';
|
|
24
|
+
import { NO_LOGGING, TempDir, WATCHER_TIMINGS as TIMINGS } from '../test/watcher-test-helper.js';
|
|
25
|
+
import { DirectoryWatcherProvider, NodeDirectoryWatcher } from './node-directory-watcher.js';
|
|
26
|
+
import { WatcherHost } from './watcher-host.js';
|
|
30
27
|
const track = temp.track();
|
|
31
28
|
/** How long to keep listening after the expected changes arrived, to catch any that should not have. */
|
|
32
|
-
const SETTLE_DELAY =
|
|
29
|
+
const SETTLE_DELAY = TIMINGS.deleteDelay * 3;
|
|
33
30
|
/** Indexed by `FileChangeType`. */
|
|
34
31
|
const CHANGE_NAMES = ['updated', 'added', 'deleted'];
|
|
35
32
|
/** Replaces the whole platform boundary, so behaviour no host can reproduce is driven directly. */
|
|
36
|
-
class TestHost extends
|
|
33
|
+
class TestHost extends WatcherHost {
|
|
37
34
|
constructor() {
|
|
38
35
|
super(...arguments);
|
|
39
36
|
/** Set to exercise the macOS and Windows name handling on any host. */
|
|
@@ -42,7 +39,7 @@ class TestHost extends watcher_host_1.WatcherHost {
|
|
|
42
39
|
this.caseInsensitive = super.caseInsensitiveFileNames;
|
|
43
40
|
/** Set to make `fs.watch` refuse, as on EACCES or an exhausted handle budget. */
|
|
44
41
|
this.refuseToOpen = false;
|
|
45
|
-
this.missing = new
|
|
42
|
+
this.missing = new Deferred();
|
|
46
43
|
/** Resolves once `expectMissing` was told a path and that path was found missing. */
|
|
47
44
|
this.whenMissing = this.missing.promise;
|
|
48
45
|
/** How many times a directory was read. */
|
|
@@ -92,17 +89,17 @@ class TestHost extends watcher_host_1.WatcherHost {
|
|
|
92
89
|
throw new Error('EACCES');
|
|
93
90
|
}
|
|
94
91
|
this.listener = listener;
|
|
95
|
-
this.handleEmitter = new
|
|
92
|
+
this.handleEmitter = new EventEmitter();
|
|
96
93
|
return Object.assign(this.handleEmitter, { close: () => { this.listener = undefined; } });
|
|
97
94
|
}
|
|
98
95
|
}
|
|
99
96
|
/** A temporary directory, the watchers on it, and the changes their clients were told about. */
|
|
100
|
-
class Sandbox extends
|
|
97
|
+
class Sandbox extends TempDir {
|
|
101
98
|
constructor() {
|
|
102
99
|
super(fs.realpathSync.native(temp.mkdirSync('node-directory-watcher')));
|
|
103
100
|
/** Errors logged by the watchers of this sandbox. */
|
|
104
101
|
this.errors = [];
|
|
105
|
-
this.logging = { ...
|
|
102
|
+
this.logging = { ...NO_LOGGING, error: (message) => this.errors.push(message) };
|
|
106
103
|
this.reports = [];
|
|
107
104
|
/** The platform boundary every watcher of this sandbox shares. */
|
|
108
105
|
this.host = new TestHost(this.logging);
|
|
@@ -137,7 +134,7 @@ class Sandbox extends watcher_test_helper_1.TempDir {
|
|
|
137
134
|
}
|
|
138
135
|
/** A watcher whose events the test feeds in, not yet started. */
|
|
139
136
|
starting(target = this.root, ...requests) {
|
|
140
|
-
return this.track(new
|
|
137
|
+
return this.track(new NodeDirectoryWatcher(target, this.logging, this, TIMINGS, this.host), requests);
|
|
141
138
|
}
|
|
142
139
|
/** Feeds the watchers of this sandbox an event as the platform would. */
|
|
143
140
|
fire(eventType, fileName) {
|
|
@@ -145,7 +142,7 @@ class Sandbox extends watcher_test_helper_1.TempDir {
|
|
|
145
142
|
}
|
|
146
143
|
/** A watcher driven by a real `fs.watch` handle, already started. */
|
|
147
144
|
async watchingForReal(target = this.root, ...requests) {
|
|
148
|
-
const watcher = this.track(new
|
|
145
|
+
const watcher = this.track(new NodeDirectoryWatcher(target, this.logging, this, TIMINGS, new WatcherHost(this.logging)), requests);
|
|
149
146
|
await watcher.whenStarted;
|
|
150
147
|
await this.warmUp(watcher, target);
|
|
151
148
|
return watcher;
|
|
@@ -161,7 +158,7 @@ class Sandbox extends watcher_test_helper_1.TempDir {
|
|
|
161
158
|
const deadline = Date.now() + 5000;
|
|
162
159
|
while (!this.reported(99).some(entry => entry.includes('.warmup')) && Date.now() < deadline) {
|
|
163
160
|
fs.writeFileSync(probe, 'ping');
|
|
164
|
-
await
|
|
161
|
+
await wait(100);
|
|
165
162
|
}
|
|
166
163
|
fs.removeSync(probe);
|
|
167
164
|
}
|
|
@@ -171,7 +168,7 @@ class Sandbox extends watcher_test_helper_1.TempDir {
|
|
|
171
168
|
.filter(report => report.clients?.includes(clientId))
|
|
172
169
|
.flatMap(report => report.changes)
|
|
173
170
|
.map(change => {
|
|
174
|
-
const relative = path.relative(this.root,
|
|
171
|
+
const relative = path.relative(this.root, FileUri.fsPath(change.uri)).split(path.sep).join('/');
|
|
175
172
|
return `${CHANGE_NAMES[change.type]} ${relative || '.'}`;
|
|
176
173
|
});
|
|
177
174
|
}
|
|
@@ -202,7 +199,7 @@ class Sandbox extends watcher_test_helper_1.TempDir {
|
|
|
202
199
|
});
|
|
203
200
|
this.notify = undefined;
|
|
204
201
|
}
|
|
205
|
-
await
|
|
202
|
+
await wait(SETTLE_DELAY);
|
|
206
203
|
}
|
|
207
204
|
}
|
|
208
205
|
describe('node-directory-watcher', function () {
|
|
@@ -234,7 +231,7 @@ describe('node-directory-watcher', function () {
|
|
|
234
231
|
box.write('a.txt');
|
|
235
232
|
box.host.duringNextRead = async () => {
|
|
236
233
|
box.fire('change', 'a.txt');
|
|
237
|
-
await
|
|
234
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
238
235
|
};
|
|
239
236
|
await box.watching(box.root, box.directory());
|
|
240
237
|
await box.expect(1, 'updated a.txt');
|
|
@@ -243,7 +240,7 @@ describe('node-directory-watcher', function () {
|
|
|
243
240
|
box.host.duringNextRead = async () => {
|
|
244
241
|
box.write('a.txt');
|
|
245
242
|
box.fire('rename', 'a.txt');
|
|
246
|
-
await
|
|
243
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
247
244
|
};
|
|
248
245
|
await box.watching(box.root, box.directory());
|
|
249
246
|
await box.expect(1, 'added a.txt');
|
|
@@ -268,10 +265,10 @@ describe('node-directory-watcher', function () {
|
|
|
268
265
|
box.write('a.txt');
|
|
269
266
|
box.write('b.txt');
|
|
270
267
|
// A long grace period, so the deletions wait for the second batch on a slow host.
|
|
271
|
-
const watcher = new
|
|
268
|
+
const watcher = new NodeDirectoryWatcher(box.root, NO_LOGGING, box, { ...TIMINGS, deleteDelay: 1000 }, box.host);
|
|
272
269
|
watcher.addRequest(0, box.directory());
|
|
273
270
|
await watcher.whenStarted;
|
|
274
|
-
const lookedUp = new
|
|
271
|
+
const lookedUp = new Deferred();
|
|
275
272
|
const childLookup = box.host.childLookup.bind(box.host);
|
|
276
273
|
box.host.childLookup = directory => {
|
|
277
274
|
const storedName = childLookup(directory);
|
|
@@ -417,7 +414,7 @@ describe('node-directory-watcher', function () {
|
|
|
417
414
|
});
|
|
418
415
|
it('reports changes under the path each request asked for', async () => {
|
|
419
416
|
const real = box.mkdir('real');
|
|
420
|
-
fs.symlinkSync(real, box.path('link'),
|
|
417
|
+
fs.symlinkSync(real, box.path('link'), isWindows ? 'junction' : 'dir');
|
|
421
418
|
await box.watching(real, box.directory(real), box.directory(box.path('link'), 2, [], real));
|
|
422
419
|
box.write('real', 'a.txt');
|
|
423
420
|
box.fire('rename', 'a.txt');
|
|
@@ -483,7 +480,7 @@ describe('node-directory-watcher', function () {
|
|
|
483
480
|
});
|
|
484
481
|
it('is followed through a symbolic link above it once it appears', async () => {
|
|
485
482
|
const real = box.mkdir('real');
|
|
486
|
-
fs.symlinkSync(real, box.path('link'),
|
|
483
|
+
fs.symlinkSync(real, box.path('link'), isWindows ? 'junction' : 'dir');
|
|
487
484
|
const target = box.path('link', 'later');
|
|
488
485
|
box.host.expectMissing(target);
|
|
489
486
|
// Missing, so the provider could not resolve the link and kept the path as it was asked for.
|
|
@@ -506,7 +503,7 @@ describe('node-directory-watcher', function () {
|
|
|
506
503
|
watcher.addRequest(1, box.directory(box.root, 2));
|
|
507
504
|
box.remove('later.txt');
|
|
508
505
|
box.host.fail(new Error('EPERM'));
|
|
509
|
-
await
|
|
506
|
+
await wait(TIMINGS.existencePollDelay * 2);
|
|
510
507
|
box.write('after.txt');
|
|
511
508
|
box.fire('rename', 'after.txt');
|
|
512
509
|
await box.expectAmong(2, 'added after.txt');
|
|
@@ -619,7 +616,7 @@ describe('node-directory-watcher', function () {
|
|
|
619
616
|
};
|
|
620
617
|
box.mkdir('ws');
|
|
621
618
|
box.write('ws', 'a.txt');
|
|
622
|
-
await
|
|
619
|
+
await wait(TIMINGS.existencePollDelay * 4);
|
|
623
620
|
box.mkdir('ws');
|
|
624
621
|
box.write('ws', 'a.txt');
|
|
625
622
|
await box.expect(1, 'deleted ws', 'added ws');
|
|
@@ -667,7 +664,7 @@ describe('node-directory-watcher', function () {
|
|
|
667
664
|
box.host.duringNextRead = async () => {
|
|
668
665
|
box.write('ws', 'a.txt');
|
|
669
666
|
box.fire('change', 'a.txt');
|
|
670
|
-
await
|
|
667
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
671
668
|
};
|
|
672
669
|
await box.watching(target, box.directory(target));
|
|
673
670
|
await box.expect(1);
|
|
@@ -685,7 +682,7 @@ describe('node-directory-watcher', function () {
|
|
|
685
682
|
};
|
|
686
683
|
box.mkdir('cfg');
|
|
687
684
|
box.write('cfg', 'settings.json');
|
|
688
|
-
await
|
|
685
|
+
await wait(TIMINGS.existencePollDelay * 6);
|
|
689
686
|
await box.expect(1, 'deleted cfg');
|
|
690
687
|
await box.expect(2);
|
|
691
688
|
});
|
|
@@ -698,7 +695,7 @@ describe('node-directory-watcher', function () {
|
|
|
698
695
|
box.host.duringNextRead = async () => {
|
|
699
696
|
box.write('ws', 'a.txt');
|
|
700
697
|
box.fire('rename', 'a.txt');
|
|
701
|
-
await
|
|
698
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
702
699
|
fs.renameSync(target, box.path('ws-old'));
|
|
703
700
|
box.mkdir('ws');
|
|
704
701
|
box.write('ws', 'a.txt');
|
|
@@ -794,7 +791,7 @@ describe('node-directory-watcher', function () {
|
|
|
794
791
|
box.host.refuseToOpen = true;
|
|
795
792
|
box.host.expectMissing(target);
|
|
796
793
|
box.starting(target, box.directory(target));
|
|
797
|
-
await
|
|
794
|
+
await wait(TIMINGS.existencePollDelay * 2);
|
|
798
795
|
box.remove('ws');
|
|
799
796
|
await box.host.whenMissing;
|
|
800
797
|
await box.expect(1, 'deleted ws');
|
|
@@ -869,7 +866,7 @@ describe('node-directory-watcher', function () {
|
|
|
869
866
|
const watcher = box.starting(box.root);
|
|
870
867
|
box.host.refuseToOpen = true;
|
|
871
868
|
// Several poll rounds, one report.
|
|
872
|
-
await
|
|
869
|
+
await wait(TIMINGS.existencePollDelay * 4);
|
|
873
870
|
assert.strictEqual(box.errors.length, 1, `expected one report, got ${JSON.stringify(box.errors)}`);
|
|
874
871
|
box.host.refuseToOpen = false;
|
|
875
872
|
watcher.addRequest(0, box.directory());
|
|
@@ -884,7 +881,7 @@ describe('node-directory-watcher', function () {
|
|
|
884
881
|
// decline this one and leave the watcher holding a dead handle for good.
|
|
885
882
|
box.host.duringNextRead = () => box.host.fail(new Error('EPERM'));
|
|
886
883
|
box.host.fail(new Error('EPERM'));
|
|
887
|
-
await
|
|
884
|
+
await wait(TIMINGS.existencePollDelay * 5);
|
|
888
885
|
box.write('a.txt');
|
|
889
886
|
box.fire('rename', 'a.txt');
|
|
890
887
|
await box.expectAmong(1, 'added a.txt');
|
|
@@ -912,7 +909,7 @@ describe('node-directory-watcher', function () {
|
|
|
912
909
|
box.write('a.txt');
|
|
913
910
|
box.fire('rename', 'a.txt');
|
|
914
911
|
// Long enough for the batch to be queued behind the restart before the handle fails again.
|
|
915
|
-
await
|
|
912
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
916
913
|
box.host.fail(new Error('EPERM'));
|
|
917
914
|
};
|
|
918
915
|
box.host.fail(new Error('EPERM'));
|
|
@@ -924,7 +921,7 @@ describe('node-directory-watcher', function () {
|
|
|
924
921
|
box.host.duringNextRead = async () => {
|
|
925
922
|
box.write('a.txt');
|
|
926
923
|
box.fire('rename', 'a.txt');
|
|
927
|
-
await
|
|
924
|
+
await wait(TIMINGS.changeDelay * 4);
|
|
928
925
|
box.host.fail(new Error('EPERM'));
|
|
929
926
|
};
|
|
930
927
|
box.host.fail(new Error('EPERM'));
|
|
@@ -963,7 +960,7 @@ describe('node-directory-watcher', function () {
|
|
|
963
960
|
box.write('later');
|
|
964
961
|
box.host.duringNextRead = () => box.host.fail(new Error('EPERM'));
|
|
965
962
|
box.host.fail(new Error('EPERM'));
|
|
966
|
-
await
|
|
963
|
+
await wait(TIMINGS.existencePollDelay * 5);
|
|
967
964
|
assert.strictEqual(watcher.directory, box.root);
|
|
968
965
|
assert.strictEqual(resolved, 1);
|
|
969
966
|
});
|
|
@@ -971,7 +968,7 @@ describe('node-directory-watcher', function () {
|
|
|
971
968
|
box.write('a.txt');
|
|
972
969
|
box.host.duringNextRead = () => box.host.fail(new Error('EPERM'));
|
|
973
970
|
await box.watching(box.root, box.directory());
|
|
974
|
-
await
|
|
971
|
+
await wait(TIMINGS.existencePollDelay * 2);
|
|
975
972
|
box.write('b.txt');
|
|
976
973
|
box.fire('rename', 'b.txt');
|
|
977
974
|
await box.expect(1, 'added b.txt');
|
|
@@ -1009,7 +1006,7 @@ describe('node-directory-watcher', function () {
|
|
|
1009
1006
|
const file = box.write('foo.txt');
|
|
1010
1007
|
box.host.caseInsensitive = true;
|
|
1011
1008
|
// A long grace period, so the deletion of the old name still waits after the first batch on a slow host.
|
|
1012
|
-
const watcher = new
|
|
1009
|
+
const watcher = new NodeDirectoryWatcher(box.root, NO_LOGGING, box, { ...TIMINGS, deleteDelay: 1000 }, box.host);
|
|
1013
1010
|
watcher.addRequest(0, box.file(file));
|
|
1014
1011
|
watcher.addRequest(1, box.directory(box.root, 2));
|
|
1015
1012
|
await watcher.whenStarted;
|
|
@@ -1079,8 +1076,8 @@ describe('node-directory-watcher', function () {
|
|
|
1079
1076
|
assert.strictEqual(box.host.reads - readsBefore, 2);
|
|
1080
1077
|
});
|
|
1081
1078
|
it('rejects a timing that would silently become 1ms', () => {
|
|
1082
|
-
assert.throws(() => new
|
|
1083
|
-
assert.throws(() => new
|
|
1079
|
+
assert.throws(() => new NodeDirectoryWatcher(box.root, NO_LOGGING, box, { ...TIMINGS, deleteDelay: 0 }), /positive number/);
|
|
1080
|
+
assert.throws(() => new NodeDirectoryWatcher(box.root, NO_LOGGING, box, { ...TIMINGS, changeDelay: -1 }), /positive number/);
|
|
1084
1081
|
});
|
|
1085
1082
|
it('refuses to watch a network share, which crashes macOS', async () => {
|
|
1086
1083
|
const target = box.mkdir('network-share');
|
|
@@ -1114,12 +1111,12 @@ describe('node-directory-watcher', function () {
|
|
|
1114
1111
|
await watcher.whenDisposed;
|
|
1115
1112
|
});
|
|
1116
1113
|
it('tells a request moved onto a watcher still waiting for its directory about its file once', async () => {
|
|
1117
|
-
const provider = new
|
|
1114
|
+
const provider = new DirectoryWatcherProvider(NO_LOGGING, box, { ...TIMINGS, existencePollDelay: 400 }, box.host);
|
|
1118
1115
|
const directory = box.path('cfg');
|
|
1119
1116
|
const file = box.path('cfg', 'settings.json');
|
|
1120
1117
|
try {
|
|
1121
1118
|
await provider.watch(0, box.directory(directory));
|
|
1122
|
-
await
|
|
1119
|
+
await wait(200);
|
|
1123
1120
|
await provider.watch(1, box.file(file, 2));
|
|
1124
1121
|
// Both appear right after the directory watcher polled, so the file watcher finds them first.
|
|
1125
1122
|
const exists = box.host.exists.bind(box.host);
|
|
@@ -1141,7 +1138,7 @@ describe('node-directory-watcher', function () {
|
|
|
1141
1138
|
}
|
|
1142
1139
|
});
|
|
1143
1140
|
it('opens no second handle on a directory when a file request for it is merged', async () => {
|
|
1144
|
-
const provider = new
|
|
1141
|
+
const provider = new DirectoryWatcherProvider(NO_LOGGING, box, TIMINGS, box.host);
|
|
1145
1142
|
const opened = [];
|
|
1146
1143
|
const watch = box.host.watch.bind(box.host);
|
|
1147
1144
|
box.host.watch = (directory, listener) => {
|
|
@@ -1164,7 +1161,7 @@ describe('node-directory-watcher', function () {
|
|
|
1164
1161
|
}
|
|
1165
1162
|
});
|
|
1166
1163
|
it('does not tell a directory request joining a re-keyed file watcher that its directory was added', async () => {
|
|
1167
|
-
const provider = new
|
|
1164
|
+
const provider = new DirectoryWatcherProvider(NO_LOGGING, box, TIMINGS, box.host);
|
|
1168
1165
|
try {
|
|
1169
1166
|
await provider.watch(0, box.file(box.path('later.txt')));
|
|
1170
1167
|
// Joins after the re-key to the directory, while the file watcher reads its children.
|
|
@@ -1183,7 +1180,7 @@ describe('node-directory-watcher', function () {
|
|
|
1183
1180
|
it('happens once the last request is released', async () => {
|
|
1184
1181
|
const watcher = await box.watching(box.root, box.directory(), box.directory(box.root, 2));
|
|
1185
1182
|
watcher.removeRequest(0);
|
|
1186
|
-
await
|
|
1183
|
+
await wait(TIMINGS.deferredDisposalTimeout * 2);
|
|
1187
1184
|
assert.strictEqual(watcher.isDisposed, false, 'a watcher with a request left must stay alive');
|
|
1188
1185
|
watcher.removeRequest(1);
|
|
1189
1186
|
await watcher.whenDisposed;
|
|
@@ -1192,7 +1189,7 @@ describe('node-directory-watcher', function () {
|
|
|
1192
1189
|
const watcher = await box.watching(box.root, box.directory());
|
|
1193
1190
|
watcher.removeRequest(0);
|
|
1194
1191
|
watcher.addRequest(1, box.directory(box.root, 2));
|
|
1195
|
-
await
|
|
1192
|
+
await wait(TIMINGS.deferredDisposalTimeout * 2);
|
|
1196
1193
|
assert.strictEqual(watcher.isDisposed, false);
|
|
1197
1194
|
});
|
|
1198
1195
|
it('silences a deletion that was still pending', async () => {
|
|
@@ -1205,7 +1202,7 @@ describe('node-directory-watcher', function () {
|
|
|
1205
1202
|
});
|
|
1206
1203
|
it('keeps its state in sync while it briefly has no requests', async () => {
|
|
1207
1204
|
box.write('a.txt');
|
|
1208
|
-
const watcher = new
|
|
1205
|
+
const watcher = new NodeDirectoryWatcher(box.root, NO_LOGGING, box, { ...TIMINGS, deferredDisposalTimeout: 1000 }, box.host);
|
|
1209
1206
|
watcher.addRequest(0, box.directory());
|
|
1210
1207
|
await watcher.whenStarted;
|
|
1211
1208
|
try {
|
|
@@ -1213,7 +1210,7 @@ describe('node-directory-watcher', function () {
|
|
|
1213
1210
|
box.remove('a.txt');
|
|
1214
1211
|
box.fire('rename', 'a.txt');
|
|
1215
1212
|
watcher.removeRequest(0);
|
|
1216
|
-
await
|
|
1213
|
+
await wait(TIMINGS.deleteDelay * 3);
|
|
1217
1214
|
// The deletion was settled meanwhile, so the recreated file is an addition, not an update.
|
|
1218
1215
|
watcher.addRequest(1, box.directory(box.root, 2));
|
|
1219
1216
|
box.write('a.txt');
|