@jsenv/filesystem 4.8.1 → 4.9.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.
Files changed (39) hide show
  1. package/package.json +2 -2
  2. package/src/copy/copy_directory_content.js +4 -4
  3. package/src/copy/copy_directory_content_sync.js +4 -4
  4. package/src/copy/copy_entry.js +8 -8
  5. package/src/copy/copy_entry_sync.js +8 -8
  6. package/src/lifecycle/create_watcher.js +1 -1
  7. package/src/lifecycle/register_directory_lifecycle.js +2 -2
  8. package/src/lifecycle/register_file_lifecycle.js +3 -3
  9. package/src/list/collect_directory_match_report.js +1 -1
  10. package/src/list/collect_files.js +2 -2
  11. package/src/list/visit_structure_sync.js +2 -2
  12. package/src/main.js +5 -0
  13. package/src/move/move_directory_content.js +3 -3
  14. package/src/move/move_entry.js +5 -5
  15. package/src/move/move_entry_sync.js +111 -0
  16. package/src/move/move_file.js +5 -0
  17. package/src/move/move_file_sync.js +5 -0
  18. package/src/path_and_url/directory_url_validation.js +1 -1
  19. package/src/read_write/ensure_parent_directories.js +1 -1
  20. package/src/read_write/ensure_parent_directories_sync.js +1 -1
  21. package/src/read_write/get_real_file_system_url_sync.js +1 -1
  22. package/src/read_write/read_file_structure_sync.js +2 -2
  23. package/src/read_write/read_symbolic_link.js +1 -1
  24. package/src/read_write/read_symbolic_link_sync.js +1 -1
  25. package/src/read_write/stat/read_entry_permissions.js +1 -1
  26. package/src/read_write/stat/read_entry_stat.js +1 -1
  27. package/src/read_write/stat/read_entry_stat_sync.js +1 -1
  28. package/src/read_write/stat/test_entry_permissions.js +1 -1
  29. package/src/read_write/write_directory.js +2 -2
  30. package/src/read_write/write_directory_sync.js +1 -1
  31. package/src/read_write/write_file_sync.js +1 -1
  32. package/src/read_write/write_symbolic_link.js +5 -5
  33. package/src/read_write/write_symbolic_link_sync.js +5 -5
  34. package/src/remove/clear_directory_sync.js +1 -1
  35. package/src/remove/ensure_empty_directory.js +1 -1
  36. package/src/remove/remove_entry.js +3 -3
  37. package/src/remove/remove_entry_sync.js +8 -8
  38. package/src/remove/remove_file.js +2 -2
  39. package/src/remove/remove_file_sync.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/filesystem",
3
- "version": "4.8.1",
3
+ "version": "4.9.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,7 +31,7 @@
31
31
  "test": "node --conditions=development ./scripts/test.mjs"
32
32
  },
33
33
  "dependencies": {
34
- "@jsenv/urls": "2.3.0",
34
+ "@jsenv/urls": "2.3.1",
35
35
  "@jsenv/url-meta": "8.4.2",
36
36
  "@jsenv/abort": "4.3.0",
37
37
  "@jsenv/utils": "2.1.1"
@@ -1,12 +1,12 @@
1
1
  import { Abort } from "@jsenv/abort";
2
- import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls";
2
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls";
3
3
 
4
4
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
5
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
6
- import { statsToType } from "../read_write/stat/stats_to_type.js";
7
- import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
8
- import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
9
6
  import { readDirectory } from "../read_write/read_directory.js";
7
+ import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
8
+ import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
9
+ import { statsToType } from "../read_write/stat/stats_to_type.js";
10
10
  import { copyEntry } from "./copy_entry.js";
11
11
 
12
12
  export const copyDirectoryContent = async ({
@@ -1,12 +1,12 @@
1
1
  import { Abort } from "@jsenv/abort";
2
- import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls";
2
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls";
3
3
 
4
4
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
5
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
6
- import { statsToType } from "../read_write/stat/stats_to_type.js";
7
- import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
8
- import { readSymbolicLinkSync } from "../read_write/read_symbolic_link_sync.js";
9
6
  import { readDirectorySync } from "../read_write/read_directory_sync.js";
7
+ import { readSymbolicLinkSync } from "../read_write/read_symbolic_link_sync.js";
8
+ import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
9
+ import { statsToType } from "../read_write/stat/stats_to_type.js";
10
10
  import { copyEntrySync } from "./copy_entry_sync.js";
11
11
 
12
12
  export const copyDirectoryContentSync = ({
@@ -1,24 +1,24 @@
1
- import { copyFile as copyFileNode } from "node:fs";
2
1
  import { Abort } from "@jsenv/abort";
3
2
  import {
4
- resolveUrl,
5
- urlToRelativeUrl,
6
3
  ensurePathnameTrailingSlash,
4
+ resolveUrl,
7
5
  urlIsInsideOf,
8
6
  urlToFileSystemPath,
7
+ urlToRelativeUrl,
9
8
  } from "@jsenv/urls";
9
+ import { copyFile as copyFileNode } from "node:fs";
10
10
 
11
11
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
12
12
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
13
+ import { ensureParentDirectories } from "../read_write/ensure_parent_directories.js";
14
+ import { readDirectory } from "../read_write/read_directory.js";
15
+ import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
16
+ import { binaryFlagsToPermissions } from "../read_write/stat/permissions.js";
13
17
  import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
14
18
  import { statsToType } from "../read_write/stat/stats_to_type.js";
15
- import { binaryFlagsToPermissions } from "../read_write/stat/permissions.js";
16
- import { writeEntryPermissions } from "../read_write/stat/write_entry_permissions.js";
17
19
  import { writeEntryModificationTime } from "../read_write/stat/write_entry_modification_time.js";
20
+ import { writeEntryPermissions } from "../read_write/stat/write_entry_permissions.js";
18
21
  import { writeDirectory } from "../read_write/write_directory.js";
19
- import { ensureParentDirectories } from "../read_write/ensure_parent_directories.js";
20
- import { readDirectory } from "../read_write/read_directory.js";
21
- import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
22
22
  import { writeSymbolicLink } from "../read_write/write_symbolic_link.js";
23
23
  import { removeEntry } from "../remove/remove_entry.js";
24
24
 
@@ -1,24 +1,24 @@
1
- import { copyFileSync as copyFileSyncNode } from "node:fs";
2
1
  import { Abort } from "@jsenv/abort";
3
2
  import {
4
- resolveUrl,
5
- urlToRelativeUrl,
6
3
  ensurePathnameTrailingSlash,
4
+ resolveUrl,
7
5
  urlIsInsideOf,
8
6
  urlToFileSystemPath,
7
+ urlToRelativeUrl,
9
8
  } from "@jsenv/urls";
9
+ import { copyFileSync as copyFileSyncNode } from "node:fs";
10
10
 
11
11
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
12
12
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
13
+ import { ensureParentDirectoriesSync } from "../read_write/ensure_parent_directories_sync.js";
14
+ import { readDirectorySync } from "../read_write/read_directory_sync.js";
15
+ import { readSymbolicLinkSync } from "../read_write/read_symbolic_link_sync.js";
16
+ import { binaryFlagsToPermissions } from "../read_write/stat/permissions.js";
13
17
  import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
14
18
  import { statsToType } from "../read_write/stat/stats_to_type.js";
15
- import { binaryFlagsToPermissions } from "../read_write/stat/permissions.js";
16
- import { writeEntryPermissionsSync } from "../read_write/stat/write_entry_permissions_sync.js";
17
19
  import { writeEntryModificationTimeSync } from "../read_write/stat/write_entry_modification_time_sync.js";
20
+ import { writeEntryPermissionsSync } from "../read_write/stat/write_entry_permissions_sync.js";
18
21
  import { writeDirectorySync } from "../read_write/write_directory_sync.js";
19
- import { ensureParentDirectoriesSync } from "../read_write/ensure_parent_directories_sync.js";
20
- import { readDirectorySync } from "../read_write/read_directory_sync.js";
21
- import { readSymbolicLinkSync } from "../read_write/read_symbolic_link_sync.js";
22
22
  import { writeSymbolicLinkSync } from "../read_write/write_symbolic_link_sync.js";
23
23
  import { removeEntrySync } from "../remove/remove_entry_sync.js";
24
24
 
@@ -1,4 +1,4 @@
1
- import { watch, openSync, closeSync } from "node:fs";
1
+ import { closeSync, openSync, watch } from "node:fs";
2
2
 
3
3
  const isWindows = process.platform === "win32";
4
4
 
@@ -1,11 +1,11 @@
1
- import { readdirSync, statSync } from "node:fs";
2
1
  import { URL_META } from "@jsenv/url-meta";
3
2
  import { urlToFileSystemPath, urlToRelativeUrl } from "@jsenv/urls";
3
+ import { readdirSync, statSync } from "node:fs";
4
4
 
5
5
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
6
6
  import { statsToType } from "../read_write/stat/stats_to_type.js";
7
- import { guardTooFastSecondCallPerFile } from "./guard_second_call.js";
8
7
  import { createWatcher } from "./create_watcher.js";
8
+ import { guardTooFastSecondCallPerFile } from "./guard_second_call.js";
9
9
  import { trackResources } from "./track_resources.js";
10
10
 
11
11
  const isLinux = process.platform === "linux";
@@ -1,12 +1,12 @@
1
- import { statSync } from "node:fs";
2
- import { dirname, basename } from "node:path";
3
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
+ import { statSync } from "node:fs";
3
+ import { basename, dirname } from "node:path";
4
4
 
5
5
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
6
6
  import { statsToType } from "../read_write/stat/stats_to_type.js";
7
- import { trackResources } from "./track_resources.js";
8
7
  import { createWatcher } from "./create_watcher.js";
9
8
  import { guardTooFastSecondCall } from "./guard_second_call.js";
9
+ import { trackResources } from "./track_resources.js";
10
10
 
11
11
  export const registerFileLifecycle = (
12
12
  source,
@@ -2,8 +2,8 @@ import { Abort } from "@jsenv/abort";
2
2
  import { URL_META } from "@jsenv/url-meta";
3
3
  import { urlToRelativeUrl } from "@jsenv/urls";
4
4
 
5
- import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
6
5
  import { comparePathnames } from "../path_and_url/compare_pathnames.js";
6
+ import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
7
7
  import { readDirectory } from "../read_write/read_directory.js";
8
8
  import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
9
9
 
@@ -2,10 +2,10 @@ import { Abort } from "@jsenv/abort";
2
2
  import { URL_META } from "@jsenv/url-meta";
3
3
  import { urlToRelativeUrl } from "@jsenv/urls";
4
4
 
5
- import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
6
5
  import { comparePathnames } from "../path_and_url/compare_pathnames.js";
7
- import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
6
+ import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
8
7
  import { readDirectory } from "../read_write/read_directory.js";
8
+ import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
9
9
 
10
10
  export const collectFiles = async ({
11
11
  signal = new AbortController().signal,
@@ -1,10 +1,10 @@
1
1
  import { URL_META } from "@jsenv/url-meta";
2
2
  import { urlToRelativeUrl } from "@jsenv/urls";
3
3
 
4
- import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
4
  import { comparePathnames } from "../path_and_url/compare_pathnames.js";
6
- import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
5
+ import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
7
6
  import { readDirectorySync } from "../read_write/read_directory_sync.js";
7
+ import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
8
8
 
9
9
  export const visitStructureSync = ({
10
10
  directoryUrl,
package/src/main.js CHANGED
@@ -1,3 +1,5 @@
1
+ // tslint:disable:ordered-imports
2
+
1
3
  // we might wanna expose the sync versions as follows:
2
4
  // readDirectory.sync()
3
5
  // +1: very easy to switch between sync/async versions of a given function
@@ -57,7 +59,10 @@ export { writeEntryModificationTimeSync } from "./read_write/stat/write_entry_mo
57
59
 
58
60
  // move
59
61
  export { moveDirectoryContent } from "./move/move_directory_content.js";
62
+ export { moveFile } from "./move/move_file.js";
60
63
  export { moveEntry } from "./move/move_entry.js";
64
+ export { moveFileSync } from "./move/move_file_sync.js";
65
+ export { moveEntrySync } from "./move/move_entry_sync.js";
61
66
 
62
67
  // copy
63
68
  export { copyEntry } from "./copy/copy_entry.js";
@@ -1,12 +1,12 @@
1
1
  import { Abort } from "@jsenv/abort";
2
- import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls";
2
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls";
3
3
 
4
4
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
5
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
6
+ import { readDirectory } from "../read_write/read_directory.js";
7
+ import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
6
8
  import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
7
9
  import { statsToType } from "../read_write/stat/stats_to_type.js";
8
- import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
9
- import { readDirectory } from "../read_write/read_directory.js";
10
10
  import { moveEntry } from "./move_entry.js";
11
11
 
12
12
  export const moveDirectoryContent = async ({
@@ -1,14 +1,14 @@
1
- import { rename } from "node:fs";
2
1
  import { Abort } from "@jsenv/abort";
3
- import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls";
2
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls";
3
+ import { rename } from "node:fs";
4
4
 
5
+ import { copyEntry } from "../copy/copy_entry.js";
5
6
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
6
7
  import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
7
- import { statsToType } from "../read_write/stat/stats_to_type.js";
8
- import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
9
8
  import { ensureParentDirectories } from "../read_write/ensure_parent_directories.js";
10
9
  import { readSymbolicLink } from "../read_write/read_symbolic_link.js";
11
- import { copyEntry } from "../copy/copy_entry.js";
10
+ import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
11
+ import { statsToType } from "../read_write/stat/stats_to_type.js";
12
12
  import { removeEntry } from "../remove/remove_entry.js";
13
13
 
14
14
  export const moveEntry = async ({
@@ -0,0 +1,111 @@
1
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls";
2
+ import { renameSync } from "node:fs";
3
+
4
+ import { copyEntry } from "../copy/copy_entry.js";
5
+ import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
6
+ import { urlTargetsSameFileSystemPath } from "../path_and_url/url_targets_same_file_system_path.js";
7
+ import { ensureParentDirectoriesSync } from "../read_write/ensure_parent_directories_sync.js";
8
+ import { readSymbolicLinkSync } from "../read_write/read_symbolic_link_sync.js";
9
+ import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
10
+ import { statsToType } from "../read_write/stat/stats_to_type.js";
11
+ import { removeEntrySync } from "../remove/remove_entry_sync.js";
12
+
13
+ export const moveEntrySync = ({
14
+ from,
15
+ to,
16
+ overwrite = false,
17
+ allowUseless = false,
18
+ followLink = true,
19
+ }) => {
20
+ const fromUrl = assertAndNormalizeFileUrl(from);
21
+ const fromPath = urlToFileSystemPath(fromUrl);
22
+ let toUrl = assertAndNormalizeFileUrl(to);
23
+ let toPath = urlToFileSystemPath(toUrl);
24
+
25
+ const sourceStats = readEntryStatSync(fromUrl, {
26
+ nullIfNotFound: true,
27
+ followLink: false,
28
+ });
29
+ if (!sourceStats) {
30
+ throw new Error(`nothing to move from ${fromPath}`);
31
+ }
32
+
33
+ let destinationStats = readEntryStatSync(toUrl, {
34
+ nullIfNotFound: true,
35
+ // we force false here but in fact we will follow the destination link
36
+ // to know where we will actually move and detect useless move overrite etc..
37
+ followLink: false,
38
+ });
39
+
40
+ if (followLink && destinationStats && destinationStats.isSymbolicLink()) {
41
+ const linkTarget = readSymbolicLinkSync(toUrl);
42
+ toUrl = resolveUrl(linkTarget, toUrl);
43
+ toPath = urlToFileSystemPath(toUrl);
44
+ destinationStats = readEntryStatSync(toUrl, {
45
+ nullIfNotFound: true,
46
+ });
47
+ }
48
+
49
+ if (urlTargetsSameFileSystemPath(fromUrl, toUrl)) {
50
+ if (allowUseless) {
51
+ return;
52
+ }
53
+ throw new Error(
54
+ `no move needed for ${fromPath} because destination and source are the same`,
55
+ );
56
+ }
57
+
58
+ if (destinationStats) {
59
+ const sourceType = statsToType(sourceStats);
60
+ const destinationType = statsToType(destinationStats);
61
+
62
+ if (sourceType !== destinationType) {
63
+ throw new Error(
64
+ `cannot move ${sourceType} from ${fromPath} to ${toPath} because destination exists and is not a ${sourceType} (it's a ${destinationType})`,
65
+ );
66
+ }
67
+ if (!overwrite) {
68
+ throw new Error(
69
+ `cannot move ${sourceType} from ${fromPath} to ${toPath} because destination exists and overwrite option is disabled`,
70
+ );
71
+ }
72
+
73
+ // remove file, link, directory...
74
+ removeEntrySync(toUrl, {
75
+ recursive: true,
76
+ });
77
+ } else {
78
+ ensureParentDirectoriesSync(toUrl);
79
+ }
80
+
81
+ moveNaiveSync(fromPath, toPath, {
82
+ handleCrossDeviceError: () => {
83
+ copyEntry({
84
+ from: fromUrl,
85
+ to: toUrl,
86
+ preserveStat: true,
87
+ });
88
+ removeEntrySync(fromUrl, {
89
+ recursive: true,
90
+ });
91
+ },
92
+ });
93
+ };
94
+
95
+ const moveNaiveSync = (
96
+ fromPath,
97
+ destinationPath,
98
+ { handleCrossDeviceError = null } = {},
99
+ ) => {
100
+ try {
101
+ renameSync(fromPath, destinationPath);
102
+ } catch (error) {
103
+ if (error) {
104
+ if (handleCrossDeviceError && error.code === "EXDEV") {
105
+ handleCrossDeviceError(error);
106
+ } else {
107
+ throw error;
108
+ }
109
+ }
110
+ }
111
+ };
@@ -0,0 +1,5 @@
1
+ import { moveEntry } from "./move_entry.js";
2
+
3
+ export const moveFile = async (options) => {
4
+ await moveEntry(options);
5
+ };
@@ -0,0 +1,5 @@
1
+ import { moveEntrySync } from "./move_entry_sync.js";
2
+
3
+ export const moveFileSync = (options) => {
4
+ moveEntrySync(options);
5
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
+ ensurePathnameTrailingSlash,
2
3
  fileSystemPathToUrl,
3
4
  isFileSystemPath,
4
- ensurePathnameTrailingSlash,
5
5
  } from "@jsenv/urls";
6
6
 
7
7
  export const validateDirectoryUrl = (value) => {
@@ -1,5 +1,5 @@
1
- import { dirname } from "node:path";
2
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
+ import { dirname } from "node:path";
3
3
 
4
4
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
5
5
  import { writeDirectory } from "./write_directory.js";
@@ -1,5 +1,5 @@
1
- import { dirname } from "node:path";
2
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
+ import { dirname } from "node:path";
3
3
 
4
4
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
5
5
  import { writeDirectorySync } from "./write_directory_sync.js";
@@ -1,5 +1,5 @@
1
- import { readdirSync, realpathSync } from "node:fs";
2
1
  import { fileSystemPathToUrl, urlToFileSystemPath } from "@jsenv/urls";
2
+ import { readdirSync, realpathSync } from "node:fs";
3
3
 
4
4
  export const getRealFileSystemUrlSync = (
5
5
  fileUrl,
@@ -1,9 +1,9 @@
1
- import { readdirSync, statSync, readFileSync } from "node:fs";
2
1
  import { urlToRelativeUrl } from "@jsenv/urls";
3
2
  import { CONTENT_TYPE } from "@jsenv/utils/src/content_type/content_type.js";
3
+ import { readdirSync, readFileSync, statSync } from "node:fs";
4
4
 
5
- import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
6
5
  import { comparePathnames } from "../path_and_url/compare_pathnames.js";
6
+ import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
7
7
 
8
8
  export const readFileStructureSync = (directoryUrl) => {
9
9
  directoryUrl = assertAndNormalizeDirectoryUrl(directoryUrl);
@@ -3,8 +3,8 @@
3
3
  * https://nodejs.org/docs/latest-v13.x/api/fs.html#fs_fs_symlink_target_path_type_callback
4
4
  */
5
5
 
6
+ import { fileSystemPathToUrl, isFileSystemPath } from "@jsenv/urls";
6
7
  import { readlink } from "node:fs";
7
- import { isFileSystemPath, fileSystemPathToUrl } from "@jsenv/urls";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
10
10
 
@@ -3,8 +3,8 @@
3
3
  * https://nodejs.org/docs/latest-v13.x/api/fs.html#fs_fs_symlink_target_path_type_callback
4
4
  */
5
5
 
6
+ import { fileSystemPathToUrl, isFileSystemPath } from "@jsenv/urls";
6
7
  import { readlinkSync } from "node:fs";
7
- import { isFileSystemPath, fileSystemPathToUrl } from "@jsenv/urls";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
10
10
 
@@ -3,8 +3,8 @@
3
3
  * https://nodejs.org/docs/latest-v13.x/api/fs.html#fs_file_modes
4
4
  */
5
5
 
6
- import { promises } from "node:fs";
7
6
  import { urlToFileSystemPath } from "@jsenv/urls";
7
+ import { promises } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../../path_and_url/file_url_validation.js";
10
10
  import { binaryFlagsToPermissions } from "./permissions.js";
@@ -3,8 +3,8 @@
3
3
  * https://nodejs.org/docs/latest-v13.x/api/fs.html#fs_class_fs_stats
4
4
  */
5
5
 
6
- import { lstat, stat } from "node:fs";
7
6
  import { urlToFileSystemPath } from "@jsenv/urls";
7
+ import { lstat, stat } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../../path_and_url/file_url_validation.js";
10
10
  import { writeEntryPermissions } from "./write_entry_permissions.js";
@@ -3,8 +3,8 @@
3
3
  * https://nodejs.org/docs/latest-v13.x/api/fs.html#fs_class_fs_stats
4
4
  */
5
5
 
6
- import { lstatSync, statSync } from "node:fs";
7
6
  import { urlToFileSystemPath } from "@jsenv/urls";
7
+ import { lstatSync, statSync } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../../path_and_url/file_url_validation.js";
10
10
  import { writeEntryPermissionsSync } from "./write_entry_permissions_sync.js";
@@ -1,4 +1,4 @@
1
- import { promises, constants } from "node:fs";
1
+ import { constants, promises } from "node:fs";
2
2
 
3
3
  import { assertAndNormalizeFileUrl } from "../../path_and_url/file_url_validation.js";
4
4
 
@@ -1,9 +1,9 @@
1
- import { promises } from "node:fs";
2
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
+ import { promises } from "node:fs";
3
3
 
4
4
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
- import { statsToType } from "./stat/stats_to_type.js";
6
5
  import { readEntryStat } from "./stat/read_entry_stat.js";
6
+ import { statsToType } from "./stat/stats_to_type.js";
7
7
 
8
8
  // https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fspromises_mkdir_path_options
9
9
  const { mkdir } = promises;
@@ -1,5 +1,5 @@
1
- import { mkdirSync } from "node:fs";
2
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
+ import { mkdirSync } from "node:fs";
3
3
 
4
4
  import { assertAndNormalizeDirectoryUrl } from "../path_and_url/directory_url_validation.js";
5
5
  import { readEntryStatSync } from "./stat/read_entry_stat_sync.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
- writeFileSync as writeFileSyncNode,
3
2
  mkdirSync,
4
3
  readFileSync,
4
+ writeFileSync as writeFileSyncNode,
5
5
  } from "node:fs";
6
6
 
7
7
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
@@ -1,16 +1,16 @@
1
- import { promises } from "node:fs";
2
1
  import {
3
2
  fileSystemPathToUrl,
4
- urlToFileSystemPath,
5
- resolveUrl,
6
3
  isFileSystemPath,
4
+ resolveUrl,
5
+ urlToFileSystemPath,
7
6
  } from "@jsenv/urls";
7
+ import { promises } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
10
10
  import { removeEntry } from "../remove/remove_entry.js";
11
- import { readEntryStat } from "./stat/read_entry_stat.js";
12
- import { readSymbolicLink } from "./read_symbolic_link.js";
13
11
  import { ensureParentDirectories } from "./ensure_parent_directories.js";
12
+ import { readSymbolicLink } from "./read_symbolic_link.js";
13
+ import { readEntryStat } from "./stat/read_entry_stat.js";
14
14
 
15
15
  // https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fspromises_symlink_target_path_type
16
16
  const { symlink } = promises;
@@ -1,16 +1,16 @@
1
- import { symlinkSync } from "node:fs";
2
1
  import {
3
2
  fileSystemPathToUrl,
4
- urlToFileSystemPath,
5
- resolveUrl,
6
3
  isFileSystemPath,
4
+ resolveUrl,
5
+ urlToFileSystemPath,
7
6
  } from "@jsenv/urls";
7
+ import { symlinkSync } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
10
10
  import { removeEntrySync } from "../remove/remove_entry_sync.js";
11
- import { readEntryStatSync } from "./stat/read_entry_stat_sync.js";
12
- import { readSymbolicLinkSync } from "./read_symbolic_link_sync.js";
13
11
  import { ensureParentDirectoriesSync } from "./ensure_parent_directories_sync.js";
12
+ import { readSymbolicLinkSync } from "./read_symbolic_link_sync.js";
13
+ import { readEntryStatSync } from "./stat/read_entry_stat_sync.js";
14
14
 
15
15
  const isWindows = process.platform === "win32";
16
16
 
@@ -1,5 +1,5 @@
1
- import { readdirSync, statSync } from "node:fs";
2
1
  import { URL_META } from "@jsenv/url-meta";
2
+ import { readdirSync, statSync } from "node:fs";
3
3
 
4
4
  import { removeEntrySync } from "./remove_entry_sync.js";
5
5
 
@@ -1,8 +1,8 @@
1
1
  import { urlToFileSystemPath } from "@jsenv/urls";
2
2
 
3
3
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
4
- import { statsToType } from "../read_write/stat/stats_to_type.js";
5
4
  import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
5
+ import { statsToType } from "../read_write/stat/stats_to_type.js";
6
6
  import { writeDirectory } from "../read_write/write_directory.js";
7
7
  import { removeEntry } from "./remove_entry.js";
8
8
 
@@ -1,14 +1,14 @@
1
- import { unlink, rmdir, openSync, closeSync } from "node:fs";
2
1
  import { Abort } from "@jsenv/abort";
3
2
  import {
4
3
  ensurePathnameTrailingSlash,
5
- urlToFileSystemPath,
6
4
  resolveUrl,
5
+ urlToFileSystemPath,
7
6
  } from "@jsenv/urls";
7
+ import { closeSync, openSync, rmdir, unlink } from "node:fs";
8
8
 
9
9
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
10
- import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
11
10
  import { readDirectory } from "../read_write/read_directory.js";
11
+ import { readEntryStat } from "../read_write/stat/read_entry_stat.js";
12
12
 
13
13
  export const removeEntry = async (
14
14
  source,
@@ -1,16 +1,16 @@
1
- import {
2
- unlinkSync,
3
- rmdirSync,
4
- readdirSync,
5
- openSync,
6
- closeSync,
7
- } from "node:fs";
8
1
  import { Abort } from "@jsenv/abort";
9
2
  import {
10
3
  ensurePathnameTrailingSlash,
11
- urlToFileSystemPath,
12
4
  resolveUrl,
5
+ urlToFileSystemPath,
13
6
  } from "@jsenv/urls";
7
+ import {
8
+ closeSync,
9
+ openSync,
10
+ readdirSync,
11
+ rmdirSync,
12
+ unlinkSync,
13
+ } from "node:fs";
14
14
 
15
15
  import { assertAndNormalizeFileUrl } from "../path_and_url/file_url_validation.js";
16
16
  import { readEntryStatSync } from "../read_write/stat/read_entry_stat_sync.js";
@@ -1,5 +1,5 @@
1
1
  import { removeEntry } from "./remove_entry.js";
2
2
 
3
- export const removeFile = (url, options) => {
4
- return removeEntry(url, options);
3
+ export const removeFile = async (url, options) => {
4
+ await removeEntry(url, options);
5
5
  };
@@ -1,5 +1,5 @@
1
1
  import { removeEntrySync } from "./remove_entry_sync.js";
2
2
 
3
3
  export const removeFileSync = (url, options) => {
4
- return removeEntrySync(url, options);
4
+ removeEntrySync(url, options);
5
5
  };