@jsenv/filesystem 4.1.9 → 4.2.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/package.json +4 -5
- package/src/assertDirectoryPresence.js +2 -1
- package/src/assertFilePresence.js +2 -1
- package/src/collectDirectoryMatchReport.js +1 -1
- package/src/collectFiles.js +1 -1
- package/src/copyDirectoryContent.js +1 -1
- package/src/copyEntry.js +1 -1
- package/src/directory_url_validation.js +52 -0
- package/src/ensureEmptyDirectory.js +2 -1
- package/src/ensureParentDirectories.js +1 -1
- package/src/file_url_validation.js +50 -0
- package/src/grantPermissionsOnEntry.js +1 -1
- package/src/main.js +41 -0
- package/src/moveDirectoryContent.js +1 -1
- package/src/moveEntry.js +1 -1
- package/src/readDirectory.js +1 -1
- package/src/readEntryPermissions.js +1 -1
- package/src/readEntryStat.js +1 -1
- package/src/readFile.js +1 -1
- package/src/readFileSync.js +1 -1
- package/src/readSymbolicLink.js +1 -1
- package/src/registerDirectoryLifecycle.js +1 -1
- package/src/registerFileLifecycle.js +1 -1
- package/src/removeEntry.js +1 -1
- package/src/testEntryPermissions.js +1 -1
- package/src/writeDirectory.js +1 -1
- package/src/writeEntryModificationTime.js +1 -1
- package/src/writeEntryPermissions.js +1 -1
- package/src/writeFile.js +1 -1
- package/src/writeFileSync.js +1 -1
- package/src/writeSymbolicLink.js +1 -1
- package/main.js +0 -35
- package/src/assertAndNormalizeDirectoryUrl.js +0 -35
- package/src/assertAndNormalizeFileUrl.js +0 -27
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/filesystem",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,20 +18,19 @@
|
|
|
18
18
|
"type": "module",
|
|
19
19
|
"exports": {
|
|
20
20
|
".": {
|
|
21
|
-
"import": "./main.js"
|
|
21
|
+
"import": "./src/main.js"
|
|
22
22
|
},
|
|
23
23
|
"./*": "./*"
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
|
-
"/src/"
|
|
27
|
-
"/main.js"
|
|
26
|
+
"/src/"
|
|
28
27
|
],
|
|
29
28
|
"scripts": {
|
|
30
29
|
"test": "node --conditions=development ./scripts/test.mjs"
|
|
31
30
|
},
|
|
32
31
|
"dependencies": {
|
|
33
32
|
"@jsenv/urls": "1.2.8",
|
|
34
|
-
"@jsenv/url-meta": "7.0
|
|
33
|
+
"@jsenv/url-meta": "7.1.0",
|
|
35
34
|
"@jsenv/abort": "4.2.4"
|
|
36
35
|
}
|
|
37
36
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
3
4
|
import { statsToType } from "./internal/statsToType.js"
|
|
4
5
|
import { readEntryStat } from "./readEntryStat.js"
|
|
5
6
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
3
4
|
import { statsToType } from "./internal/statsToType.js"
|
|
4
5
|
import { readEntryStat } from "./readEntryStat.js"
|
|
5
6
|
|
|
@@ -2,7 +2,7 @@ import { Abort } from "@jsenv/abort"
|
|
|
2
2
|
|
|
3
3
|
import { URL_META } from "@jsenv/url-meta"
|
|
4
4
|
import { urlToRelativeUrl } from "@jsenv/urls"
|
|
5
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
5
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
6
6
|
import { readDirectory } from "./readDirectory.js"
|
|
7
7
|
import { readEntryStat } from "./readEntryStat.js"
|
|
8
8
|
import { comparePathnames } from "./comparePathnames.js"
|
package/src/collectFiles.js
CHANGED
|
@@ -2,7 +2,7 @@ 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 "./
|
|
5
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
6
6
|
import { readDirectory } from "./readDirectory.js"
|
|
7
7
|
import { readEntryStat } from "./readEntryStat.js"
|
|
8
8
|
import { comparePathnames } from "./comparePathnames.js"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Abort } from "@jsenv/abort"
|
|
2
2
|
import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls"
|
|
3
3
|
|
|
4
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
4
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
5
5
|
import { readEntryStat } from "./readEntryStat.js"
|
|
6
6
|
import { readSymbolicLink } from "./readSymbolicLink.js"
|
|
7
7
|
import { readDirectory } from "./readDirectory.js"
|
package/src/copyEntry.js
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { urlTargetsSameFileSystemPath } from "./internal/urlTargetsSameFileSystemPath.js"
|
|
12
12
|
import { statsToType } from "./internal/statsToType.js"
|
|
13
13
|
import { binaryFlagsToPermissions } from "./internal/permissions.js"
|
|
14
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
14
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
15
15
|
import { writeDirectory } from "./writeDirectory.js"
|
|
16
16
|
import { readEntryStat } from "./readEntryStat.js"
|
|
17
17
|
import { ensureParentDirectories } from "./ensureParentDirectories.js"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fileSystemPathToUrl,
|
|
3
|
+
isFileSystemPath,
|
|
4
|
+
ensurePathnameTrailingSlash,
|
|
5
|
+
} from "@jsenv/urls"
|
|
6
|
+
|
|
7
|
+
export const validateDirectoryUrl = (value) => {
|
|
8
|
+
let urlString
|
|
9
|
+
|
|
10
|
+
if (value instanceof URL) {
|
|
11
|
+
urlString = value.href
|
|
12
|
+
} else if (typeof value === "string") {
|
|
13
|
+
if (isFileSystemPath(value)) {
|
|
14
|
+
urlString = fileSystemPathToUrl(value)
|
|
15
|
+
} else {
|
|
16
|
+
try {
|
|
17
|
+
urlString = String(new URL(value))
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return {
|
|
20
|
+
valid: false,
|
|
21
|
+
value,
|
|
22
|
+
message: `must be a valid url`,
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
return {
|
|
28
|
+
valid: false,
|
|
29
|
+
value,
|
|
30
|
+
message: `must be a string or an url`,
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!urlString.startsWith("file://")) {
|
|
34
|
+
return {
|
|
35
|
+
valid: false,
|
|
36
|
+
value,
|
|
37
|
+
message: 'must start with "file://"',
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
valid: true,
|
|
42
|
+
value: ensurePathnameTrailingSlash(urlString),
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const assertAndNormalizeDirectoryUrl = (directoryUrl) => {
|
|
47
|
+
const { valid, message, value } = validateDirectoryUrl(directoryUrl)
|
|
48
|
+
if (!valid) {
|
|
49
|
+
throw new TypeError(`directoryUrl ${message}, got ${value}`)
|
|
50
|
+
}
|
|
51
|
+
return value
|
|
52
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
3
4
|
import { statsToType } from "./internal/statsToType.js"
|
|
4
5
|
import { writeDirectory } from "./writeDirectory.js"
|
|
5
6
|
import { readEntryStat } from "./readEntryStat.js"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dirname } from "node:path"
|
|
2
2
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
3
3
|
|
|
4
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
4
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
5
5
|
import { writeDirectory } from "./writeDirectory.js"
|
|
6
6
|
|
|
7
7
|
export const ensureParentDirectories = async (destination) => {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { fileSystemPathToUrl, isFileSystemPath } from "@jsenv/urls"
|
|
2
|
+
|
|
3
|
+
export const validateFileUrl = (value, baseUrl) => {
|
|
4
|
+
let urlString
|
|
5
|
+
|
|
6
|
+
if (value instanceof URL) {
|
|
7
|
+
urlString = value.href
|
|
8
|
+
} else if (typeof value === "string") {
|
|
9
|
+
if (isFileSystemPath(value)) {
|
|
10
|
+
urlString = fileSystemPathToUrl(value)
|
|
11
|
+
} else {
|
|
12
|
+
try {
|
|
13
|
+
urlString = String(new URL(value, baseUrl))
|
|
14
|
+
} catch (e) {
|
|
15
|
+
return {
|
|
16
|
+
valid: false,
|
|
17
|
+
value,
|
|
18
|
+
message: "must be a valid url",
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
return {
|
|
24
|
+
valid: false,
|
|
25
|
+
value,
|
|
26
|
+
message: "must be a string or an url",
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!urlString.startsWith("file://")) {
|
|
31
|
+
return {
|
|
32
|
+
valid: false,
|
|
33
|
+
value,
|
|
34
|
+
message: 'must start with "file://"',
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
valid: true,
|
|
40
|
+
value: urlString,
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const assertAndNormalizeFileUrl = (fileUrl, baseUrl) => {
|
|
45
|
+
const { valid, message, value } = validateFileUrl(fileUrl, baseUrl)
|
|
46
|
+
if (!valid) {
|
|
47
|
+
throw new TypeError(`fileUrl ${message}, got ${fileUrl}`)
|
|
48
|
+
}
|
|
49
|
+
return value
|
|
50
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
1
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
2
2
|
import { readEntryPermissions } from "./readEntryPermissions.js"
|
|
3
3
|
import { writeEntryPermissions } from "./writeEntryPermissions.js"
|
|
4
4
|
|
package/src/main.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export {
|
|
2
|
+
validateDirectoryUrl,
|
|
3
|
+
assertAndNormalizeDirectoryUrl,
|
|
4
|
+
} from "./directory_url_validation.js"
|
|
5
|
+
export {
|
|
6
|
+
validateFileUrl,
|
|
7
|
+
assertAndNormalizeFileUrl,
|
|
8
|
+
} from "./file_url_validation.js"
|
|
9
|
+
export { assertDirectoryPresence } from "./assertDirectoryPresence.js"
|
|
10
|
+
export { assertFilePresence } from "./assertFilePresence.js"
|
|
11
|
+
export { bufferToEtag } from "./bufferToEtag.js"
|
|
12
|
+
export { collectDirectoryMatchReport } from "./collectDirectoryMatchReport.js"
|
|
13
|
+
export { collectFiles } from "./collectFiles.js"
|
|
14
|
+
export { comparePathnames } from "./comparePathnames.js"
|
|
15
|
+
export { ensureEmptyDirectory } from "./ensureEmptyDirectory.js"
|
|
16
|
+
export { ensureParentDirectories } from "./ensureParentDirectories.js"
|
|
17
|
+
export { ensureWindowsDriveLetter } from "./ensureWindowsDriveLetter.js"
|
|
18
|
+
export { copyEntry } from "./copyEntry.js"
|
|
19
|
+
export { copyDirectoryContent } from "./copyDirectoryContent.js"
|
|
20
|
+
export { getRealFileSystemUrlSync } from "./getRealFileSystemUrlSync.js"
|
|
21
|
+
export { grantPermissionsOnEntry } from "./grantPermissionsOnEntry.js"
|
|
22
|
+
export { listFilesMatching } from "./listFilesMatching.js"
|
|
23
|
+
export { moveDirectoryContent } from "./moveDirectoryContent.js"
|
|
24
|
+
export { moveEntry } from "./moveEntry.js"
|
|
25
|
+
export { readDirectory } from "./readDirectory.js"
|
|
26
|
+
export { readFile } from "./readFile.js"
|
|
27
|
+
export { readFileSync } from "./readFileSync.js"
|
|
28
|
+
export { readEntryModificationTime } from "./readEntryModificationTime.js"
|
|
29
|
+
export { readEntryPermissions } from "./readEntryPermissions.js"
|
|
30
|
+
export { readEntryStat } from "./readEntryStat.js"
|
|
31
|
+
export { readSymbolicLink } from "./readSymbolicLink.js"
|
|
32
|
+
export { registerDirectoryLifecycle } from "./registerDirectoryLifecycle.js"
|
|
33
|
+
export { registerFileLifecycle } from "./registerFileLifecycle.js"
|
|
34
|
+
export { removeEntry } from "./removeEntry.js"
|
|
35
|
+
export { testEntryPermissions } from "./testEntryPermissions.js"
|
|
36
|
+
export { writeDirectory } from "./writeDirectory.js"
|
|
37
|
+
export { writeFile } from "./writeFile.js"
|
|
38
|
+
export { writeFileSync } from "./writeFileSync.js"
|
|
39
|
+
export { writeEntryModificationTime } from "./writeEntryModificationTime.js"
|
|
40
|
+
export { writeEntryPermissions } from "./writeEntryPermissions.js"
|
|
41
|
+
export { writeSymbolicLink } from "./writeSymbolicLink.js"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Abort } from "@jsenv/abort"
|
|
2
2
|
import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls"
|
|
3
3
|
|
|
4
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
4
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
5
5
|
import { readEntryStat } from "./readEntryStat.js"
|
|
6
6
|
import { readSymbolicLink } from "./readSymbolicLink.js"
|
|
7
7
|
import { readDirectory } from "./readDirectory.js"
|
package/src/moveEntry.js
CHANGED
|
@@ -4,7 +4,7 @@ import { urlToFileSystemPath, resolveUrl } from "@jsenv/urls"
|
|
|
4
4
|
|
|
5
5
|
import { urlTargetsSameFileSystemPath } from "./internal/urlTargetsSameFileSystemPath.js"
|
|
6
6
|
import { statsToType } from "./internal/statsToType.js"
|
|
7
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
7
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
8
8
|
import { ensureParentDirectories } from "./ensureParentDirectories.js"
|
|
9
9
|
import { removeEntry } from "./removeEntry.js"
|
|
10
10
|
import { copyEntry } from "./copyEntry.js"
|
package/src/readDirectory.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readdir } from "node:fs"
|
|
2
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
2
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
3
3
|
|
|
4
4
|
export const readDirectory = async (url, { emfileMaxWait = 1000 } = {}) => {
|
|
5
5
|
const directoryUrl = assertAndNormalizeDirectoryUrl(url)
|
|
@@ -7,7 +7,7 @@ import { promises } from "node:fs"
|
|
|
7
7
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
8
8
|
|
|
9
9
|
import { binaryFlagsToPermissions } from "./internal/permissions.js"
|
|
10
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
10
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
11
11
|
|
|
12
12
|
const { stat } = promises
|
|
13
13
|
|
package/src/readEntryStat.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { lstat, stat } from "node:fs"
|
|
7
7
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
8
8
|
|
|
9
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
9
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
10
10
|
import { writeEntryPermissions } from "./writeEntryPermissions.js"
|
|
11
11
|
|
|
12
12
|
const isWindows = process.platform === "win32"
|
package/src/readFile.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile as readFileNode } from "node:fs"
|
|
2
2
|
|
|
3
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
4
4
|
|
|
5
5
|
export const readFile = async (value, { as = "buffer" } = {}) => {
|
|
6
6
|
const fileUrl = assertAndNormalizeFileUrl(value)
|
package/src/readFileSync.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync as readFileSyncNode } from "node:fs"
|
|
2
2
|
|
|
3
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
4
4
|
|
|
5
5
|
export const readFileSync = (value, { as = "buffer" } = {}) => {
|
|
6
6
|
const fileUrl = assertAndNormalizeFileUrl(value)
|
package/src/readSymbolicLink.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { readlink } from "node:fs"
|
|
7
7
|
import { isFileSystemPath, fileSystemPathToUrl } from "@jsenv/urls"
|
|
8
8
|
|
|
9
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
9
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
10
10
|
|
|
11
11
|
export const readSymbolicLink = (url) => {
|
|
12
12
|
const symbolicLinkUrl = assertAndNormalizeFileUrl(url)
|
|
@@ -2,7 +2,7 @@ import { readdirSync, statSync } from "node:fs"
|
|
|
2
2
|
import { URL_META } from "@jsenv/url-meta"
|
|
3
3
|
import { urlToFileSystemPath, urlToRelativeUrl } from "@jsenv/urls"
|
|
4
4
|
|
|
5
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
5
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
6
6
|
import { statsToType } from "./internal/statsToType.js"
|
|
7
7
|
import { guardTooFastSecondCallPerFile } from "./internal/guard_second_call.js"
|
|
8
8
|
import { createWatcher } from "./internal/createWatcher.js"
|
|
@@ -2,7 +2,7 @@ import { statSync } from "node:fs"
|
|
|
2
2
|
import { dirname, basename } from "node:path"
|
|
3
3
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
4
4
|
|
|
5
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
5
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
6
6
|
import { guardTooFastSecondCall } from "./internal/guard_second_call.js"
|
|
7
7
|
import { statsToType } from "./internal/statsToType.js"
|
|
8
8
|
import { createWatcher } from "./internal/createWatcher.js"
|
package/src/removeEntry.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
resolveUrl,
|
|
7
7
|
} from "@jsenv/urls"
|
|
8
8
|
|
|
9
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
9
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
10
10
|
import { readEntryStat } from "./readEntryStat.js"
|
|
11
11
|
import { readDirectory } from "./readDirectory.js"
|
|
12
12
|
|
package/src/writeDirectory.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { promises } from "node:fs"
|
|
2
2
|
import { urlToFileSystemPath } from "@jsenv/urls"
|
|
3
3
|
|
|
4
|
-
import { assertAndNormalizeDirectoryUrl } from "./
|
|
4
|
+
import { assertAndNormalizeDirectoryUrl } from "./directory_url_validation.js"
|
|
5
5
|
import { statsToType } from "./internal/statsToType.js"
|
|
6
6
|
import { readEntryStat } from "./readEntryStat.js"
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { utimes } from "node:fs"
|
|
2
2
|
|
|
3
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
4
4
|
|
|
5
5
|
export const writeEntryModificationTime = (source, mtime) => {
|
|
6
6
|
const sourceUrl = assertAndNormalizeFileUrl(source)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { chmod } from "node:fs"
|
|
2
2
|
|
|
3
3
|
import { permissionsToBinaryFlags } from "./internal/permissions.js"
|
|
4
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
4
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
5
5
|
|
|
6
6
|
export const writeEntryPermissions = async (source, permissions) => {
|
|
7
7
|
const sourceUrl = assertAndNormalizeFileUrl(source)
|
package/src/writeFile.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { writeFile as writeFileNode } from "node:fs"
|
|
2
2
|
|
|
3
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
4
4
|
import { ensureParentDirectories } from "./ensureParentDirectories.js"
|
|
5
5
|
|
|
6
6
|
export const writeFile = async (destination, content = "") => {
|
package/src/writeFileSync.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { writeFileSync as writeFileSyncNode, mkdirSync } from "node:fs"
|
|
2
2
|
|
|
3
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
3
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
4
4
|
|
|
5
5
|
export const writeFileSync = (destination, content = "") => {
|
|
6
6
|
const destinationUrl = assertAndNormalizeFileUrl(destination)
|
package/src/writeSymbolicLink.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
isFileSystemPath,
|
|
7
7
|
} from "@jsenv/urls"
|
|
8
8
|
|
|
9
|
-
import { assertAndNormalizeFileUrl } from "./
|
|
9
|
+
import { assertAndNormalizeFileUrl } from "./file_url_validation.js"
|
|
10
10
|
import { ensureParentDirectories } from "./ensureParentDirectories.js"
|
|
11
11
|
import { readEntryStat } from "./readEntryStat.js"
|
|
12
12
|
import { readSymbolicLink } from "./readSymbolicLink.js"
|
package/main.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export { assertAndNormalizeDirectoryUrl } from "./src/assertAndNormalizeDirectoryUrl.js"
|
|
2
|
-
export { assertAndNormalizeFileUrl } from "./src/assertAndNormalizeFileUrl.js"
|
|
3
|
-
export { assertDirectoryPresence } from "./src/assertDirectoryPresence.js"
|
|
4
|
-
export { assertFilePresence } from "./src/assertFilePresence.js"
|
|
5
|
-
export { bufferToEtag } from "./src/bufferToEtag.js"
|
|
6
|
-
export { collectDirectoryMatchReport } from "./src/collectDirectoryMatchReport.js"
|
|
7
|
-
export { collectFiles } from "./src/collectFiles.js"
|
|
8
|
-
export { comparePathnames } from "./src/comparePathnames.js"
|
|
9
|
-
export { ensureEmptyDirectory } from "./src/ensureEmptyDirectory.js"
|
|
10
|
-
export { ensureParentDirectories } from "./src/ensureParentDirectories.js"
|
|
11
|
-
export { ensureWindowsDriveLetter } from "./src/ensureWindowsDriveLetter.js"
|
|
12
|
-
export { copyEntry } from "./src/copyEntry.js"
|
|
13
|
-
export { copyDirectoryContent } from "./src/copyDirectoryContent.js"
|
|
14
|
-
export { getRealFileSystemUrlSync } from "./src/getRealFileSystemUrlSync.js"
|
|
15
|
-
export { grantPermissionsOnEntry } from "./src/grantPermissionsOnEntry.js"
|
|
16
|
-
export { listFilesMatching } from "./src/listFilesMatching.js"
|
|
17
|
-
export { moveDirectoryContent } from "./src/moveDirectoryContent.js"
|
|
18
|
-
export { moveEntry } from "./src/moveEntry.js"
|
|
19
|
-
export { readDirectory } from "./src/readDirectory.js"
|
|
20
|
-
export { readFile } from "./src/readFile.js"
|
|
21
|
-
export { readFileSync } from "./src/readFileSync.js"
|
|
22
|
-
export { readEntryModificationTime } from "./src/readEntryModificationTime.js"
|
|
23
|
-
export { readEntryPermissions } from "./src/readEntryPermissions.js"
|
|
24
|
-
export { readEntryStat } from "./src/readEntryStat.js"
|
|
25
|
-
export { readSymbolicLink } from "./src/readSymbolicLink.js"
|
|
26
|
-
export { registerDirectoryLifecycle } from "./src/registerDirectoryLifecycle.js"
|
|
27
|
-
export { registerFileLifecycle } from "./src/registerFileLifecycle.js"
|
|
28
|
-
export { removeEntry } from "./src/removeEntry.js"
|
|
29
|
-
export { testEntryPermissions } from "./src/testEntryPermissions.js"
|
|
30
|
-
export { writeDirectory } from "./src/writeDirectory.js"
|
|
31
|
-
export { writeFile } from "./src/writeFile.js"
|
|
32
|
-
export { writeFileSync } from "./src/writeFileSync.js"
|
|
33
|
-
export { writeEntryModificationTime } from "./src/writeEntryModificationTime.js"
|
|
34
|
-
export { writeEntryPermissions } from "./src/writeEntryPermissions.js"
|
|
35
|
-
export { writeSymbolicLink } from "./src/writeSymbolicLink.js"
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fileSystemPathToUrl,
|
|
3
|
-
isFileSystemPath,
|
|
4
|
-
ensurePathnameTrailingSlash,
|
|
5
|
-
} from "@jsenv/urls"
|
|
6
|
-
|
|
7
|
-
export const assertAndNormalizeDirectoryUrl = (value) => {
|
|
8
|
-
let urlString
|
|
9
|
-
|
|
10
|
-
if (value instanceof URL) {
|
|
11
|
-
urlString = value.href
|
|
12
|
-
} else if (typeof value === "string") {
|
|
13
|
-
if (isFileSystemPath(value)) {
|
|
14
|
-
urlString = fileSystemPathToUrl(value)
|
|
15
|
-
} else {
|
|
16
|
-
try {
|
|
17
|
-
urlString = String(new URL(value))
|
|
18
|
-
} catch (e) {
|
|
19
|
-
throw new TypeError(
|
|
20
|
-
`directoryUrl must be a valid url, received ${value}`,
|
|
21
|
-
)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
} else {
|
|
25
|
-
throw new TypeError(
|
|
26
|
-
`directoryUrl must be a string or an url, received ${value}`,
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (!urlString.startsWith("file://")) {
|
|
31
|
-
throw new Error(`directoryUrl must starts with file://, received ${value}`)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return ensurePathnameTrailingSlash(urlString)
|
|
35
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { fileSystemPathToUrl, isFileSystemPath } from "@jsenv/urls"
|
|
2
|
-
|
|
3
|
-
export const assertAndNormalizeFileUrl = (value, baseUrl) => {
|
|
4
|
-
let urlString
|
|
5
|
-
|
|
6
|
-
if (value instanceof URL) {
|
|
7
|
-
urlString = value.href
|
|
8
|
-
} else if (typeof value === "string") {
|
|
9
|
-
if (isFileSystemPath(value)) {
|
|
10
|
-
urlString = fileSystemPathToUrl(value)
|
|
11
|
-
} else {
|
|
12
|
-
try {
|
|
13
|
-
urlString = String(new URL(value, baseUrl))
|
|
14
|
-
} catch (e) {
|
|
15
|
-
throw new TypeError(`fileUrl must be a valid url, received ${value}`)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
} else {
|
|
19
|
-
throw new TypeError(`fileUrl must be a string or an url, received ${value}`)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (!urlString.startsWith("file://")) {
|
|
23
|
-
throw new Error(`fileUrl must starts with file://, received ${value}`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return urlString
|
|
27
|
-
}
|