@duplojs/server 0.0.0-stage → 0.1.0-beta.2
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/README +9 -0
- package/dist/_virtual/_rolldown/runtime.cjs +33 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/command/argument.cjs +27 -0
- package/dist/command/argument.d.ts +18 -0
- package/dist/command/argument.mjs +24 -0
- package/dist/command/create.cjs +94 -0
- package/dist/command/create.d.ts +47 -0
- package/dist/command/create.mjs +88 -0
- package/dist/command/error.cjs +153 -0
- package/dist/command/error.d.ts +53 -0
- package/dist/command/error.mjs +140 -0
- package/dist/command/exec.cjs +19 -0
- package/dist/command/exec.d.ts +13 -0
- package/dist/command/exec.mjs +17 -0
- package/dist/command/execOptions.cjs +41 -0
- package/dist/command/execOptions.d.ts +14 -0
- package/dist/command/execOptions.mjs +37 -0
- package/dist/command/help.cjs +257 -0
- package/dist/command/help.d.ts +10 -0
- package/dist/command/help.mjs +244 -0
- package/dist/command/index.cjs +78 -0
- package/dist/command/index.d.ts +8 -0
- package/dist/command/index.mjs +45 -0
- package/dist/command/kind.cjs +7 -0
- package/dist/command/kind.d.ts +2 -0
- package/dist/command/kind.mjs +5 -0
- package/dist/command/options/base.cjs +68 -0
- package/dist/command/options/base.d.ts +24 -0
- package/dist/command/options/base.mjs +63 -0
- package/dist/command/options/defaults/array.cjs +35 -0
- package/dist/command/options/defaults/array.d.ts +24 -0
- package/dist/command/options/defaults/array.mjs +29 -0
- package/dist/command/options/defaults/boolean.cjs +14 -0
- package/dist/command/options/defaults/boolean.d.ts +11 -0
- package/dist/command/options/defaults/boolean.mjs +13 -0
- package/dist/command/options/defaults/index.d.ts +3 -0
- package/dist/command/options/defaults/simple.cjs +25 -0
- package/dist/command/options/defaults/simple.d.ts +16 -0
- package/dist/command/options/defaults/simple.mjs +22 -0
- package/dist/command/options/identifier.cjs +7 -0
- package/dist/command/options/identifier.d.ts +4 -0
- package/dist/command/options/identifier.mjs +5 -0
- package/dist/command/options/index.d.ts +4 -0
- package/dist/command/options/types/index.d.ts +1 -0
- package/dist/command/options/types/options.d.ts +9 -0
- package/dist/command/types/eligibleType.d.ts +4 -0
- package/dist/command/types/forbiddenDuplicateName.d.ts +11 -0
- package/dist/command/types/index.d.ts +2 -0
- package/dist/common/environmentVariable/expandEnvironmentVariables.cjs +27 -0
- package/dist/common/environmentVariable/expandEnvironmentVariables.d.ts +2 -0
- package/dist/common/environmentVariable/expandEnvironmentVariables.mjs +22 -0
- package/dist/common/environmentVariable/index.cjs +47 -0
- package/dist/common/environmentVariable/index.d.ts +16 -0
- package/dist/common/environmentVariable/index.mjs +41 -0
- package/dist/common/environmentVariable/overrideEnvironmentVariables.cjs +13 -0
- package/dist/common/environmentVariable/overrideEnvironmentVariables.d.ts +3 -0
- package/dist/common/environmentVariable/overrideEnvironmentVariables.mjs +9 -0
- package/dist/common/environmentVariable/parseEnvironmentFiles.cjs +32 -0
- package/dist/common/environmentVariable/parseEnvironmentFiles.d.ts +4 -0
- package/dist/common/environmentVariable/parseEnvironmentFiles.mjs +26 -0
- package/dist/common/environmentVariableOrThrow.cjs +23 -0
- package/dist/common/environmentVariableOrThrow.d.ts +12 -0
- package/dist/common/environmentVariableOrThrow.mjs +19 -0
- package/dist/common/exitProcess.cjs +7 -0
- package/dist/common/exitProcess.d.ts +6 -0
- package/dist/common/exitProcess.mjs +8 -0
- package/dist/common/getCurrentWorkDirectory.cjs +15 -0
- package/dist/common/getCurrentWorkDirectory.d.ts +8 -0
- package/dist/common/getCurrentWorkDirectory.mjs +11 -0
- package/dist/common/getCurrentWorkDirectoryOrThrow.cjs +25 -0
- package/dist/common/getCurrentWorkDirectoryOrThrow.d.ts +8 -0
- package/dist/common/getCurrentWorkDirectoryOrThrow.mjs +20 -0
- package/dist/common/getProcessArguments.cjs +18 -0
- package/dist/common/getProcessArguments.d.ts +6 -0
- package/dist/common/getProcessArguments.mjs +18 -0
- package/dist/common/index.cjs +41 -0
- package/dist/common/index.d.ts +8 -0
- package/dist/common/index.mjs +25 -0
- package/dist/common/setCurrentWorkingDirectory.cjs +11 -0
- package/dist/common/setCurrentWorkingDirectory.d.ts +8 -0
- package/dist/common/setCurrentWorkingDirectory.mjs +9 -0
- package/dist/common/setCurrentWorkingDirectoryOrThrow.cjs +23 -0
- package/dist/common/setCurrentWorkingDirectoryOrThrow.d.ts +8 -0
- package/dist/common/setCurrentWorkingDirectoryOrThrow.mjs +18 -0
- package/dist/dataStructure/common/codec/defaults/index.d.ts +2 -0
- package/dist/dataStructure/common/codec/defaults/json.cjs +14 -0
- package/dist/dataStructure/common/codec/defaults/json.d.ts +9 -0
- package/dist/dataStructure/common/codec/defaults/json.mjs +11 -0
- package/dist/dataStructure/common/codec/defaults/string.cjs +14 -0
- package/dist/dataStructure/common/codec/defaults/string.d.ts +13 -0
- package/dist/dataStructure/common/codec/defaults/string.mjs +11 -0
- package/dist/dataStructure/common/codec/index.d.ts +1 -0
- package/dist/dataStructure/common/error/defaultInterpreter.cjs +27 -0
- package/dist/dataStructure/common/error/defaultInterpreter.d.ts +64 -0
- package/dist/dataStructure/common/error/defaultInterpreter.mjs +24 -0
- package/dist/dataStructure/common/error/index.d.ts +1 -0
- package/dist/dataStructure/common/index.d.ts +2 -0
- package/dist/dataStructure/constraint/exist.cjs +19 -0
- package/dist/dataStructure/constraint/exist.d.ts +10 -0
- package/dist/dataStructure/constraint/exist.mjs +15 -0
- package/dist/dataStructure/constraint/index.d.ts +4 -0
- package/dist/dataStructure/constraint/mimeType.cjs +18 -0
- package/dist/dataStructure/constraint/mimeType.d.ts +11 -0
- package/dist/dataStructure/constraint/mimeType.mjs +14 -0
- package/dist/dataStructure/constraint/size.cjs +29 -0
- package/dist/dataStructure/constraint/size.d.ts +16 -0
- package/dist/dataStructure/constraint/size.mjs +24 -0
- package/dist/dataStructure/constraint/types/constraints.d.ts +10 -0
- package/dist/dataStructure/constraint/types/index.d.ts +1 -0
- package/dist/dataStructure/fundamentalType/file.cjs +11 -0
- package/dist/dataStructure/fundamentalType/file.d.ts +8 -0
- package/dist/dataStructure/fundamentalType/file.mjs +8 -0
- package/dist/dataStructure/fundamentalType/index.d.ts +2 -0
- package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +6 -0
- package/dist/dataStructure/fundamentalType/types/index.d.ts +1 -0
- package/dist/dataStructure/helper/exist.cjs +7 -0
- package/dist/dataStructure/helper/exist.d.ts +2 -0
- package/dist/dataStructure/helper/exist.mjs +7 -0
- package/dist/dataStructure/helper/file.cjs +10 -0
- package/dist/dataStructure/helper/file.d.ts +3 -0
- package/dist/dataStructure/helper/file.mjs +8 -0
- package/dist/dataStructure/helper/index.d.ts +4 -0
- package/dist/dataStructure/helper/mimeType.cjs +7 -0
- package/dist/dataStructure/helper/mimeType.d.ts +2 -0
- package/dist/dataStructure/helper/mimeType.mjs +7 -0
- package/dist/dataStructure/helper/size.cjs +7 -0
- package/dist/dataStructure/helper/size.d.ts +2 -0
- package/dist/dataStructure/helper/size.mjs +7 -0
- package/dist/dataStructure/index.cjs +62 -0
- package/dist/dataStructure/index.d.ts +6 -0
- package/dist/dataStructure/index.mjs +38 -0
- package/dist/dataStructure/kind.cjs +7 -0
- package/dist/dataStructure/kind.d.ts +2 -0
- package/dist/dataStructure/kind.mjs +5 -0
- package/dist/dataStructure/type/file.cjs +14 -0
- package/dist/dataStructure/type/file.d.ts +11 -0
- package/dist/dataStructure/type/file.mjs +11 -0
- package/dist/dataStructure/type/index.d.ts +2 -0
- package/dist/dataStructure/type/types/index.d.ts +1 -0
- package/dist/dataStructure/type/types/types.d.ts +6 -0
- package/dist/file/appendFile.cjs +43 -0
- package/dist/file/appendFile.d.ts +11 -0
- package/dist/file/appendFile.mjs +41 -0
- package/dist/file/appendTextFile.cjs +43 -0
- package/dist/file/appendTextFile.d.ts +11 -0
- package/dist/file/appendTextFile.mjs +41 -0
- package/dist/file/copy.cjs +31 -0
- package/dist/file/copy.d.ts +11 -0
- package/dist/file/copy.mjs +29 -0
- package/dist/file/createEntryInterface.cjs +16 -0
- package/dist/file/createEntryInterface.d.ts +3 -0
- package/dist/file/createEntryInterface.mjs +13 -0
- package/dist/file/ensureDirectory.cjs +32 -0
- package/dist/file/ensureDirectory.d.ts +10 -0
- package/dist/file/ensureDirectory.mjs +30 -0
- package/dist/file/ensureFile.cjs +38 -0
- package/dist/file/ensureFile.d.ts +10 -0
- package/dist/file/ensureFile.mjs +36 -0
- package/dist/file/exists.cjs +29 -0
- package/dist/file/exists.d.ts +10 -0
- package/dist/file/exists.mjs +27 -0
- package/dist/file/fileInterface.cjs +74 -0
- package/dist/file/fileInterface.d.ts +30 -0
- package/dist/file/fileInterface.mjs +69 -0
- package/dist/file/folderInterface.cjs +74 -0
- package/dist/file/folderInterface.d.ts +32 -0
- package/dist/file/folderInterface.mjs +69 -0
- package/dist/file/index.cjs +122 -0
- package/dist/file/index.d.ts +36 -0
- package/dist/file/index.mjs +79 -0
- package/dist/file/link.cjs +44 -0
- package/dist/file/link.d.ts +11 -0
- package/dist/file/link.mjs +42 -0
- package/dist/file/linkStat.cjs +84 -0
- package/dist/file/linkStat.d.ts +11 -0
- package/dist/file/linkStat.mjs +80 -0
- package/dist/file/makeDirectory.cjs +36 -0
- package/dist/file/makeDirectory.d.ts +14 -0
- package/dist/file/makeDirectory.mjs +34 -0
- package/dist/file/makeTemporaryDirectory.cjs +30 -0
- package/dist/file/makeTemporaryDirectory.d.ts +9 -0
- package/dist/file/makeTemporaryDirectory.mjs +28 -0
- package/dist/file/makeTemporaryFile.cjs +45 -0
- package/dist/file/makeTemporaryFile.d.ts +10 -0
- package/dist/file/makeTemporaryFile.mjs +41 -0
- package/dist/file/move.cjs +45 -0
- package/dist/file/move.d.ts +11 -0
- package/dist/file/move.mjs +43 -0
- package/dist/file/readDirectory.cjs +20 -0
- package/dist/file/readDirectory.d.ts +14 -0
- package/dist/file/readDirectory.mjs +18 -0
- package/dist/file/readFile.cjs +33 -0
- package/dist/file/readFile.d.ts +10 -0
- package/dist/file/readFile.mjs +31 -0
- package/dist/file/readJsonFile.cjs +33 -0
- package/dist/file/readJsonFile.d.ts +11 -0
- package/dist/file/readJsonFile.mjs +31 -0
- package/dist/file/readLink.cjs +30 -0
- package/dist/file/readLink.d.ts +10 -0
- package/dist/file/readLink.mjs +28 -0
- package/dist/file/readTextFile.cjs +33 -0
- package/dist/file/readTextFile.d.ts +10 -0
- package/dist/file/readTextFile.mjs +31 -0
- package/dist/file/realPath.cjs +28 -0
- package/dist/file/realPath.d.ts +10 -0
- package/dist/file/realPath.mjs +26 -0
- package/dist/file/relocate.cjs +56 -0
- package/dist/file/relocate.d.ts +11 -0
- package/dist/file/relocate.mjs +53 -0
- package/dist/file/remove.cjs +38 -0
- package/dist/file/remove.d.ts +14 -0
- package/dist/file/remove.mjs +36 -0
- package/dist/file/rename.cjs +56 -0
- package/dist/file/rename.d.ts +11 -0
- package/dist/file/rename.mjs +53 -0
- package/dist/file/setMode.cjs +51 -0
- package/dist/file/setMode.d.ts +26 -0
- package/dist/file/setMode.mjs +48 -0
- package/dist/file/setOwner.cjs +37 -0
- package/dist/file/setOwner.d.ts +15 -0
- package/dist/file/setOwner.mjs +35 -0
- package/dist/file/setTime.cjs +39 -0
- package/dist/file/setTime.d.ts +17 -0
- package/dist/file/setTime.mjs +36 -0
- package/dist/file/stat.cjs +85 -0
- package/dist/file/stat.d.ts +42 -0
- package/dist/file/stat.mjs +81 -0
- package/dist/file/symlink.cjs +42 -0
- package/dist/file/symlink.d.ts +19 -0
- package/dist/file/symlink.mjs +40 -0
- package/dist/file/truncate.cjs +38 -0
- package/dist/file/truncate.d.ts +10 -0
- package/dist/file/truncate.mjs +35 -0
- package/dist/file/types/fileSystemEither.d.ts +2 -0
- package/dist/file/types/index.d.ts +1 -0
- package/dist/file/unknownEntryInterface.cjs +36 -0
- package/dist/file/unknownEntryInterface.d.ts +15 -0
- package/dist/file/unknownEntryInterface.mjs +33 -0
- package/dist/file/walkDirectory.cjs +34 -0
- package/dist/file/walkDirectory.d.ts +16 -0
- package/dist/file/walkDirectory.mjs +28 -0
- package/dist/file/writeFile.cjs +44 -0
- package/dist/file/writeFile.d.ts +11 -0
- package/dist/file/writeFile.mjs +42 -0
- package/dist/file/writeJsonFile.cjs +56 -0
- package/dist/file/writeJsonFile.d.ts +15 -0
- package/dist/file/writeJsonFile.mjs +53 -0
- package/dist/file/writeTextFile.cjs +44 -0
- package/dist/file/writeTextFile.d.ts +11 -0
- package/dist/file/writeTextFile.mjs +42 -0
- package/dist/implementor.cjs +64 -0
- package/dist/implementor.d.ts +35 -0
- package/dist/implementor.mjs +52 -0
- package/dist/index.cjs +74 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.mjs +14 -0
- package/dist/kind.cjs +7 -0
- package/dist/kind.d.ts +2 -0
- package/dist/kind.mjs +5 -0
- package/package.json +81 -3
- package/README.md +0 -3
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
3
|
+
import * as DEither from "@duplojs/lang/either";
|
|
4
|
+
import * as DChrono from "@duplojs/lang/chrono";
|
|
5
|
+
//#region scripts/file/linkStat.ts
|
|
6
|
+
function handleNodeLinkStatError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "ENOENT") return DEither.left("file-system-link-stat-not-found", error);
|
|
9
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-link-stat-permission-denied", error);
|
|
10
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-link-stat-not-directory", error);
|
|
11
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-link-stat-too-many-open-files", error);
|
|
12
|
+
else if (error.code === "EBUSY") return DEither.left("file-system-link-stat-busy", error);
|
|
13
|
+
}
|
|
14
|
+
return DEither.left("file-system-link-stat-error", error);
|
|
15
|
+
}
|
|
16
|
+
function handleDenoLinkStatError(error) {
|
|
17
|
+
if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-link-stat-not-found", error);
|
|
18
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-link-stat-permission-denied", error);
|
|
19
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-link-stat-not-directory", error);
|
|
20
|
+
if (error instanceof Deno.errors.Busy) return DEither.left("file-system-link-stat-busy", error);
|
|
21
|
+
return DEither.left("file-system-link-stat-error", error);
|
|
22
|
+
}
|
|
23
|
+
function createStatInfoWithFsSource(source) {
|
|
24
|
+
return {
|
|
25
|
+
isFile: source.isFile(),
|
|
26
|
+
isDirectory: source.isDirectory(),
|
|
27
|
+
isSymlink: source.isSymbolicLink(),
|
|
28
|
+
sizeBytes: source.size,
|
|
29
|
+
modifiedAt: DChrono.isSafeTimestamp(source.mtime.getTime()) ? DChrono.createDateOrThrow(source.mtime) : null,
|
|
30
|
+
accessedAt: DChrono.isSafeTimestamp(source.atime.getTime()) ? DChrono.createDateOrThrow(source.atime) : null,
|
|
31
|
+
createdAt: DChrono.isSafeTimestamp(source.birthtime.getTime()) ? DChrono.createDateOrThrow(source.birthtime) : null,
|
|
32
|
+
changedAt: DChrono.isSafeTimestamp(source.ctime.getTime()) ? DChrono.createDateOrThrow(source.ctime) : null,
|
|
33
|
+
deviceId: source.dev,
|
|
34
|
+
inode: source.ino,
|
|
35
|
+
permissionsMode: source.mode,
|
|
36
|
+
hardLinkCount: source.nlink,
|
|
37
|
+
ownerUserId: source.uid,
|
|
38
|
+
ownerGroupId: source.gid,
|
|
39
|
+
specialDeviceId: source.rdev,
|
|
40
|
+
ioBlockSize: source.blksize,
|
|
41
|
+
allocatedBlockCount: source.blocks,
|
|
42
|
+
isBlockDevice: source.isBlockDevice(),
|
|
43
|
+
isCharacterDevice: source.isCharacterDevice(),
|
|
44
|
+
isFifo: source.isFIFO(),
|
|
45
|
+
isSocket: source.isSocket()
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createStatInfoWithDeno(source) {
|
|
49
|
+
return {
|
|
50
|
+
isFile: source.isFile,
|
|
51
|
+
isDirectory: source.isDirectory,
|
|
52
|
+
isSymlink: source.isSymlink,
|
|
53
|
+
sizeBytes: source.size,
|
|
54
|
+
modifiedAt: source.mtime && DChrono.isSafeTimestamp(source.mtime.getTime()) ? DChrono.createDateOrThrow(source.mtime) : null,
|
|
55
|
+
accessedAt: source.atime && DChrono.isSafeTimestamp(source.atime.getTime()) ? DChrono.createDateOrThrow(source.atime) : null,
|
|
56
|
+
createdAt: source.birthtime && DChrono.isSafeTimestamp(source.birthtime.getTime()) ? DChrono.createDateOrThrow(source.birthtime) : null,
|
|
57
|
+
changedAt: source.ctime && DChrono.isSafeTimestamp(source.ctime.getTime()) ? DChrono.createDateOrThrow(source.ctime) : null,
|
|
58
|
+
deviceId: source.dev,
|
|
59
|
+
inode: source.ino,
|
|
60
|
+
permissionsMode: source.mode,
|
|
61
|
+
hardLinkCount: source.nlink,
|
|
62
|
+
ownerUserId: source.uid,
|
|
63
|
+
ownerGroupId: source.gid,
|
|
64
|
+
specialDeviceId: source.rdev,
|
|
65
|
+
ioBlockSize: source.blksize,
|
|
66
|
+
allocatedBlockCount: source.blocks,
|
|
67
|
+
isBlockDevice: source.isBlockDevice,
|
|
68
|
+
isCharacterDevice: source.isCharDevice,
|
|
69
|
+
isFifo: source.isFifo,
|
|
70
|
+
isSocket: source.isSocket
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const linkStat = implementFunction("linkStat", {
|
|
74
|
+
NODE: async (path) => {
|
|
75
|
+
return (await nodeFileSystem.value).lstat(path).then(DCommon.innerPipe(createStatInfoWithFsSource, (value) => DEither.right("file-system-link-stat", value))).catch(handleNodeLinkStatError);
|
|
76
|
+
},
|
|
77
|
+
DENO: (path) => Deno.lstat(path).then(DCommon.innerPipe(createStatInfoWithDeno, (value) => DEither.right("file-system-link-stat", value))).catch(handleDenoLinkStatError)
|
|
78
|
+
});
|
|
79
|
+
//#endregion
|
|
80
|
+
export { linkStat };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
|
+
//#region scripts/file/makeDirectory.ts
|
|
6
|
+
function handleNodeMakeDirectoryError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-make-directory-not-found", error);
|
|
9
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-make-directory-permission-denied", error);
|
|
10
|
+
else if (error.code === "EEXIST") return _duplojs_lang_either.left("file-system-make-directory-already-exists", error);
|
|
11
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-make-directory-not-directory", error);
|
|
12
|
+
else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-make-directory-no-space", error);
|
|
13
|
+
else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-make-directory-read-only", error);
|
|
14
|
+
else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-make-directory-invalid-argument", error);
|
|
15
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-make-directory-too-many-open-files", error);
|
|
16
|
+
else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-make-directory-busy", error);
|
|
17
|
+
}
|
|
18
|
+
return _duplojs_lang_either.left("file-system-make-directory-error", error);
|
|
19
|
+
}
|
|
20
|
+
function handleDenoMakeDirectoryError(error) {
|
|
21
|
+
if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-make-directory-not-found", error);
|
|
22
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-make-directory-permission-denied", error);
|
|
23
|
+
if (error instanceof Deno.errors.AlreadyExists) return _duplojs_lang_either.left("file-system-make-directory-already-exists", error);
|
|
24
|
+
if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-make-directory-not-directory", error);
|
|
25
|
+
if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-make-directory-invalid-argument", error);
|
|
26
|
+
if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-make-directory-busy", error);
|
|
27
|
+
return _duplojs_lang_either.left("file-system-make-directory-error", error);
|
|
28
|
+
}
|
|
29
|
+
const makeDirectory = require_implementor.implementFunction("makeDirectory", {
|
|
30
|
+
NODE: async (path, params) => {
|
|
31
|
+
return (await require_implementor.nodeFileSystem.value).mkdir(path, { recursive: params?.recursive }).then(() => _duplojs_lang_either.right("file-system-make-directory")).catch(handleNodeMakeDirectoryError);
|
|
32
|
+
},
|
|
33
|
+
DENO: (path, params) => Deno.mkdir(path, { recursive: params?.recursive }).then(() => _duplojs_lang_either.right("file-system-make-directory")).catch(handleDenoMakeDirectoryError)
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.makeDirectory = makeDirectory;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
import type * as DPath from "@duplojs/lang/path";
|
|
4
|
+
interface MakeDirectoryParams {
|
|
5
|
+
recursive?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export type MakeDirectoryResult = FileSystemEither<DEither.Right<"make-directory", void> | DEither.Left<"make-directory-not-found", unknown> | DEither.Left<"make-directory-permission-denied", unknown> | DEither.Left<"make-directory-already-exists", unknown> | DEither.Left<"make-directory-not-directory", unknown> | DEither.Left<"make-directory-no-space", unknown> | DEither.Left<"make-directory-read-only", unknown> | DEither.Left<"make-directory-invalid-argument", unknown> | DEither.Left<"make-directory-too-many-open-files", unknown> | DEither.Left<"make-directory-busy", unknown> | DEither.Left<"make-directory-error", unknown>>;
|
|
8
|
+
declare module '../implementor' {
|
|
9
|
+
interface ServerFunction {
|
|
10
|
+
makeDirectory(path: string & DPath.Path, params?: MakeDirectoryParams): Promise<MakeDirectoryResult>;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare const makeDirectory: (path: string & DPath.Path, params?: MakeDirectoryParams) => Promise<MakeDirectoryResult>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
//#region scripts/file/makeDirectory.ts
|
|
4
|
+
function handleNodeMakeDirectoryError(error) {
|
|
5
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
6
|
+
if (error.code === "ENOENT") return DEither.left("file-system-make-directory-not-found", error);
|
|
7
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-make-directory-permission-denied", error);
|
|
8
|
+
else if (error.code === "EEXIST") return DEither.left("file-system-make-directory-already-exists", error);
|
|
9
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-make-directory-not-directory", error);
|
|
10
|
+
else if (error.code === "ENOSPC") return DEither.left("file-system-make-directory-no-space", error);
|
|
11
|
+
else if (error.code === "EROFS") return DEither.left("file-system-make-directory-read-only", error);
|
|
12
|
+
else if (error.code === "EINVAL") return DEither.left("file-system-make-directory-invalid-argument", error);
|
|
13
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-make-directory-too-many-open-files", error);
|
|
14
|
+
else if (error.code === "EBUSY") return DEither.left("file-system-make-directory-busy", error);
|
|
15
|
+
}
|
|
16
|
+
return DEither.left("file-system-make-directory-error", error);
|
|
17
|
+
}
|
|
18
|
+
function handleDenoMakeDirectoryError(error) {
|
|
19
|
+
if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-make-directory-not-found", error);
|
|
20
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-make-directory-permission-denied", error);
|
|
21
|
+
if (error instanceof Deno.errors.AlreadyExists) return DEither.left("file-system-make-directory-already-exists", error);
|
|
22
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-make-directory-not-directory", error);
|
|
23
|
+
if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-make-directory-invalid-argument", error);
|
|
24
|
+
if (error instanceof Deno.errors.Busy) return DEither.left("file-system-make-directory-busy", error);
|
|
25
|
+
return DEither.left("file-system-make-directory-error", error);
|
|
26
|
+
}
|
|
27
|
+
const makeDirectory = implementFunction("makeDirectory", {
|
|
28
|
+
NODE: async (path, params) => {
|
|
29
|
+
return (await nodeFileSystem.value).mkdir(path, { recursive: params?.recursive }).then(() => DEither.right("file-system-make-directory")).catch(handleNodeMakeDirectoryError);
|
|
30
|
+
},
|
|
31
|
+
DENO: (path, params) => Deno.mkdir(path, { recursive: params?.recursive }).then(() => DEither.right("file-system-make-directory")).catch(handleDenoMakeDirectoryError)
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { makeDirectory };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
|
+
//#region scripts/file/makeTemporaryDirectory.ts
|
|
6
|
+
function handleNodeMakeTemporaryDirectoryError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-make-temporary-directory-permission-denied", error);
|
|
9
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-make-temporary-directory-not-directory", error);
|
|
10
|
+
else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-make-temporary-directory-no-space", error);
|
|
11
|
+
else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-make-temporary-directory-read-only", error);
|
|
12
|
+
else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-make-temporary-directory-invalid-argument", error);
|
|
13
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-make-temporary-directory-too-many-open-files", error);
|
|
14
|
+
}
|
|
15
|
+
return _duplojs_lang_either.left("file-system-make-temporary-directory-error", error);
|
|
16
|
+
}
|
|
17
|
+
function handleDenoMakeTemporaryDirectoryError(error) {
|
|
18
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-make-temporary-directory-permission-denied", error);
|
|
19
|
+
if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-make-temporary-directory-not-directory", error);
|
|
20
|
+
if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-make-temporary-directory-invalid-argument", error);
|
|
21
|
+
return _duplojs_lang_either.left("file-system-make-temporary-directory-error", error);
|
|
22
|
+
}
|
|
23
|
+
const makeTemporaryDirectory = require_implementor.implementFunction("makeTemporaryDirectory", {
|
|
24
|
+
NODE: async (prefix) => {
|
|
25
|
+
return (await require_implementor.nodeFileSystem.value).mkdtemp(prefix).then((value) => _duplojs_lang_either.right("file-system-make-temporary-directory", value)).catch(handleNodeMakeTemporaryDirectoryError);
|
|
26
|
+
},
|
|
27
|
+
DENO: (prefix) => Deno.makeTempDir({ prefix }).then((value) => _duplojs_lang_either.right("file-system-make-temporary-directory", value)).catch(handleDenoMakeTemporaryDirectoryError)
|
|
28
|
+
});
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.makeTemporaryDirectory = makeTemporaryDirectory;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
export type MakeTemporaryDirectoryResult = FileSystemEither<DEither.Right<"make-temporary-directory", string> | DEither.Left<"make-temporary-directory-permission-denied", unknown> | DEither.Left<"make-temporary-directory-not-directory", unknown> | DEither.Left<"make-temporary-directory-no-space", unknown> | DEither.Left<"make-temporary-directory-read-only", unknown> | DEither.Left<"make-temporary-directory-invalid-argument", unknown> | DEither.Left<"make-temporary-directory-too-many-open-files", unknown> | DEither.Left<"make-temporary-directory-error", unknown>>;
|
|
4
|
+
declare module '../implementor' {
|
|
5
|
+
interface ServerFunction {
|
|
6
|
+
makeTemporaryDirectory(prefix: string): Promise<MakeTemporaryDirectoryResult>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare const makeTemporaryDirectory: (prefix: string) => Promise<MakeTemporaryDirectoryResult>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
//#region scripts/file/makeTemporaryDirectory.ts
|
|
4
|
+
function handleNodeMakeTemporaryDirectoryError(error) {
|
|
5
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
6
|
+
if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-make-temporary-directory-permission-denied", error);
|
|
7
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-make-temporary-directory-not-directory", error);
|
|
8
|
+
else if (error.code === "ENOSPC") return DEither.left("file-system-make-temporary-directory-no-space", error);
|
|
9
|
+
else if (error.code === "EROFS") return DEither.left("file-system-make-temporary-directory-read-only", error);
|
|
10
|
+
else if (error.code === "EINVAL") return DEither.left("file-system-make-temporary-directory-invalid-argument", error);
|
|
11
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-make-temporary-directory-too-many-open-files", error);
|
|
12
|
+
}
|
|
13
|
+
return DEither.left("file-system-make-temporary-directory-error", error);
|
|
14
|
+
}
|
|
15
|
+
function handleDenoMakeTemporaryDirectoryError(error) {
|
|
16
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-make-temporary-directory-permission-denied", error);
|
|
17
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-make-temporary-directory-not-directory", error);
|
|
18
|
+
if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-make-temporary-directory-invalid-argument", error);
|
|
19
|
+
return DEither.left("file-system-make-temporary-directory-error", error);
|
|
20
|
+
}
|
|
21
|
+
const makeTemporaryDirectory = implementFunction("makeTemporaryDirectory", {
|
|
22
|
+
NODE: async (prefix) => {
|
|
23
|
+
return (await nodeFileSystem.value).mkdtemp(prefix).then((value) => DEither.right("file-system-make-temporary-directory", value)).catch(handleNodeMakeTemporaryDirectoryError);
|
|
24
|
+
},
|
|
25
|
+
DENO: (prefix) => Deno.makeTempDir({ prefix }).then((value) => DEither.right("file-system-make-temporary-directory", value)).catch(handleDenoMakeTemporaryDirectoryError)
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { makeTemporaryDirectory };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_common = require("@duplojs/lang/common");
|
|
4
|
+
_duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
|
|
5
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
6
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
7
|
+
let _duplojs_lang_path = require("@duplojs/lang/path");
|
|
8
|
+
_duplojs_lang_path = require_runtime.__toESM(_duplojs_lang_path, 1);
|
|
9
|
+
//#region scripts/file/makeTemporaryFile.ts
|
|
10
|
+
function handleNodeMakeTemporaryFileError(error) {
|
|
11
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
12
|
+
if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-make-temporary-file-permission-denied", error);
|
|
13
|
+
else if (error.code === "EEXIST") return _duplojs_lang_either.left("file-system-make-temporary-file-already-exists", error);
|
|
14
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-make-temporary-file-not-directory", error);
|
|
15
|
+
else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-make-temporary-file-no-space", error);
|
|
16
|
+
else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-make-temporary-file-read-only", error);
|
|
17
|
+
else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-make-temporary-file-invalid-argument", error);
|
|
18
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-make-temporary-file-too-many-open-files", error);
|
|
19
|
+
}
|
|
20
|
+
return _duplojs_lang_either.left("file-system-make-temporary-file-error", error);
|
|
21
|
+
}
|
|
22
|
+
function handleDenoMakeTemporaryFileError(error) {
|
|
23
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-make-temporary-file-permission-denied", error);
|
|
24
|
+
if (error instanceof Deno.errors.AlreadyExists) return _duplojs_lang_either.left("file-system-make-temporary-file-already-exists", error);
|
|
25
|
+
if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-make-temporary-file-not-directory", error);
|
|
26
|
+
if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-make-temporary-file-invalid-argument", error);
|
|
27
|
+
return _duplojs_lang_either.left("file-system-make-temporary-file-error", error);
|
|
28
|
+
}
|
|
29
|
+
const makeTemporaryFile = require_implementor.implementFunction("makeTemporaryFile", {
|
|
30
|
+
NODE: async (prefix, suffix) => {
|
|
31
|
+
const fs = await require_implementor.nodeFileSystem.value;
|
|
32
|
+
const os = await require_implementor.nodeOs.value;
|
|
33
|
+
const crypto = await require_implementor.nodeCrypto.value;
|
|
34
|
+
const tempPath = _duplojs_lang_common.forwardAsserts(os.tmpdir(), _duplojs_lang_path.is);
|
|
35
|
+
const fileName = _duplojs_lang_common.forwardAsserts(`${prefix}${crypto.randomUUID()}${suffix ?? ""}`, _duplojs_lang_path.isSegment);
|
|
36
|
+
const fileTemporaryPath = _duplojs_lang_path.resolveRelative([tempPath, fileName]);
|
|
37
|
+
return fs.open(fileTemporaryPath, "wx").then((fh) => fh.close()).then(() => _duplojs_lang_either.right("file-system-make-temporary-file", fileTemporaryPath)).catch(handleNodeMakeTemporaryFileError);
|
|
38
|
+
},
|
|
39
|
+
DENO: (prefix, suffix) => Deno.makeTempFile({
|
|
40
|
+
prefix,
|
|
41
|
+
suffix
|
|
42
|
+
}).then((value) => _duplojs_lang_either.right("file-system-make-temporary-file", value)).catch(handleDenoMakeTemporaryFileError)
|
|
43
|
+
});
|
|
44
|
+
//#endregion
|
|
45
|
+
exports.makeTemporaryFile = makeTemporaryFile;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import * as DPath from "@duplojs/lang/path";
|
|
3
|
+
import * as DEither from "@duplojs/lang/either";
|
|
4
|
+
export type MakeTemporaryFileResult = FileSystemEither<DEither.Right<"make-temporary-file", string> | DEither.Left<"make-temporary-file-permission-denied", unknown> | DEither.Left<"make-temporary-file-already-exists", unknown> | DEither.Left<"make-temporary-file-not-directory", unknown> | DEither.Left<"make-temporary-file-no-space", unknown> | DEither.Left<"make-temporary-file-read-only", unknown> | DEither.Left<"make-temporary-file-invalid-argument", unknown> | DEither.Left<"make-temporary-file-too-many-open-files", unknown> | DEither.Left<"make-temporary-file-error", unknown>>;
|
|
5
|
+
declare module '../implementor' {
|
|
6
|
+
interface ServerFunction {
|
|
7
|
+
makeTemporaryFile(prefix: string & DPath.Segment, suffix?: string & DPath.Segment): Promise<MakeTemporaryFileResult>;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare const makeTemporaryFile: (prefix: string & DPath.Segment, suffix?: string & DPath.Segment) => Promise<MakeTemporaryFileResult>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { implementFunction, nodeCrypto, nodeFileSystem, nodeOs } from "../implementor.mjs";
|
|
2
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
3
|
+
import * as DEither from "@duplojs/lang/either";
|
|
4
|
+
import * as DPath from "@duplojs/lang/path";
|
|
5
|
+
//#region scripts/file/makeTemporaryFile.ts
|
|
6
|
+
function handleNodeMakeTemporaryFileError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-make-temporary-file-permission-denied", error);
|
|
9
|
+
else if (error.code === "EEXIST") return DEither.left("file-system-make-temporary-file-already-exists", error);
|
|
10
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-make-temporary-file-not-directory", error);
|
|
11
|
+
else if (error.code === "ENOSPC") return DEither.left("file-system-make-temporary-file-no-space", error);
|
|
12
|
+
else if (error.code === "EROFS") return DEither.left("file-system-make-temporary-file-read-only", error);
|
|
13
|
+
else if (error.code === "EINVAL") return DEither.left("file-system-make-temporary-file-invalid-argument", error);
|
|
14
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-make-temporary-file-too-many-open-files", error);
|
|
15
|
+
}
|
|
16
|
+
return DEither.left("file-system-make-temporary-file-error", error);
|
|
17
|
+
}
|
|
18
|
+
function handleDenoMakeTemporaryFileError(error) {
|
|
19
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-make-temporary-file-permission-denied", error);
|
|
20
|
+
if (error instanceof Deno.errors.AlreadyExists) return DEither.left("file-system-make-temporary-file-already-exists", error);
|
|
21
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-make-temporary-file-not-directory", error);
|
|
22
|
+
if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-make-temporary-file-invalid-argument", error);
|
|
23
|
+
return DEither.left("file-system-make-temporary-file-error", error);
|
|
24
|
+
}
|
|
25
|
+
const makeTemporaryFile = implementFunction("makeTemporaryFile", {
|
|
26
|
+
NODE: async (prefix, suffix) => {
|
|
27
|
+
const fs = await nodeFileSystem.value;
|
|
28
|
+
const os = await nodeOs.value;
|
|
29
|
+
const crypto = await nodeCrypto.value;
|
|
30
|
+
const tempPath = DCommon.forwardAsserts(os.tmpdir(), DPath.is);
|
|
31
|
+
const fileName = DCommon.forwardAsserts(`${prefix}${crypto.randomUUID()}${suffix ?? ""}`, DPath.isSegment);
|
|
32
|
+
const fileTemporaryPath = DPath.resolveRelative([tempPath, fileName]);
|
|
33
|
+
return fs.open(fileTemporaryPath, "wx").then((fh) => fh.close()).then(() => DEither.right("file-system-make-temporary-file", fileTemporaryPath)).catch(handleNodeMakeTemporaryFileError);
|
|
34
|
+
},
|
|
35
|
+
DENO: (prefix, suffix) => Deno.makeTempFile({
|
|
36
|
+
prefix,
|
|
37
|
+
suffix
|
|
38
|
+
}).then((value) => DEither.right("file-system-make-temporary-file", value)).catch(handleDenoMakeTemporaryFileError)
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { makeTemporaryFile };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
|
+
//#region scripts/file/move.ts
|
|
6
|
+
function handleNodeMoveError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-move-not-found", error);
|
|
9
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-move-permission-denied", error);
|
|
10
|
+
else if (error.code === "EEXIST") return _duplojs_lang_either.left("file-system-move-already-exists", error);
|
|
11
|
+
else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-move-is-directory", error);
|
|
12
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-move-not-directory", error);
|
|
13
|
+
else if (error.code === "ENOTEMPTY") return _duplojs_lang_either.left("file-system-move-directory-not-empty", error);
|
|
14
|
+
else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-move-read-only", error);
|
|
15
|
+
else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-move-invalid-argument", error);
|
|
16
|
+
else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-move-busy", error);
|
|
17
|
+
else if (error.code === "EXDEV") return _duplojs_lang_either.left("file-system-move-cross-device", error);
|
|
18
|
+
}
|
|
19
|
+
return _duplojs_lang_either.left("file-system-move-error", error);
|
|
20
|
+
}
|
|
21
|
+
function handleDenoMoveError(error) {
|
|
22
|
+
if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-move-not-found", error);
|
|
23
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-move-permission-denied", error);
|
|
24
|
+
if (error instanceof Deno.errors.AlreadyExists) return _duplojs_lang_either.left("file-system-move-already-exists", error);
|
|
25
|
+
if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-move-is-directory", error);
|
|
26
|
+
if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-move-not-directory", error);
|
|
27
|
+
if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-move-invalid-argument", error);
|
|
28
|
+
if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-move-busy", error);
|
|
29
|
+
return _duplojs_lang_either.left("file-system-move-error", error);
|
|
30
|
+
}
|
|
31
|
+
const moveImplementation = require_implementor.implementFunction("move", {
|
|
32
|
+
NODE: async (fromPath, toPath) => {
|
|
33
|
+
return (await require_implementor.nodeFileSystem.value).rename(fromPath, toPath).then(() => _duplojs_lang_either.right("file-system-move")).catch(handleNodeMoveError);
|
|
34
|
+
},
|
|
35
|
+
DENO: (fromPath, toPath) => Deno.rename(fromPath, toPath).then(() => _duplojs_lang_either.right("file-system-move")).catch(handleDenoMoveError)
|
|
36
|
+
});
|
|
37
|
+
function move(...args) {
|
|
38
|
+
if (args.length === 1) {
|
|
39
|
+
const [toPath] = args;
|
|
40
|
+
return (fromPath) => moveImplementation(fromPath, toPath);
|
|
41
|
+
}
|
|
42
|
+
return moveImplementation(...args);
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
exports.move = move;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import type * as DPath from "@duplojs/lang/path";
|
|
3
|
+
import * as DEither from "@duplojs/lang/either";
|
|
4
|
+
export type MoveResult = FileSystemEither<DEither.Right<"move", void> | DEither.Left<"move-not-found", unknown> | DEither.Left<"move-permission-denied", unknown> | DEither.Left<"move-already-exists", unknown> | DEither.Left<"move-is-directory", unknown> | DEither.Left<"move-not-directory", unknown> | DEither.Left<"move-directory-not-empty", unknown> | DEither.Left<"move-read-only", unknown> | DEither.Left<"move-invalid-argument", unknown> | DEither.Left<"move-busy", unknown> | DEither.Left<"move-cross-device", unknown> | DEither.Left<"move-error", unknown>>;
|
|
5
|
+
declare module '../implementor' {
|
|
6
|
+
interface ServerFunction {
|
|
7
|
+
move(fromPath: string & DPath.Path, toPath: string & DPath.Path): Promise<MoveResult>;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare function move(toPath: string & DPath.Path): (fromPath: string & DPath.Path) => Promise<MoveResult>;
|
|
11
|
+
export declare function move(fromPath: string & DPath.Path, toPath: string & DPath.Path): Promise<MoveResult>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
//#region scripts/file/move.ts
|
|
4
|
+
function handleNodeMoveError(error) {
|
|
5
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
6
|
+
if (error.code === "ENOENT") return DEither.left("file-system-move-not-found", error);
|
|
7
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-move-permission-denied", error);
|
|
8
|
+
else if (error.code === "EEXIST") return DEither.left("file-system-move-already-exists", error);
|
|
9
|
+
else if (error.code === "EISDIR") return DEither.left("file-system-move-is-directory", error);
|
|
10
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-move-not-directory", error);
|
|
11
|
+
else if (error.code === "ENOTEMPTY") return DEither.left("file-system-move-directory-not-empty", error);
|
|
12
|
+
else if (error.code === "EROFS") return DEither.left("file-system-move-read-only", error);
|
|
13
|
+
else if (error.code === "EINVAL") return DEither.left("file-system-move-invalid-argument", error);
|
|
14
|
+
else if (error.code === "EBUSY") return DEither.left("file-system-move-busy", error);
|
|
15
|
+
else if (error.code === "EXDEV") return DEither.left("file-system-move-cross-device", error);
|
|
16
|
+
}
|
|
17
|
+
return DEither.left("file-system-move-error", error);
|
|
18
|
+
}
|
|
19
|
+
function handleDenoMoveError(error) {
|
|
20
|
+
if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-move-not-found", error);
|
|
21
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-move-permission-denied", error);
|
|
22
|
+
if (error instanceof Deno.errors.AlreadyExists) return DEither.left("file-system-move-already-exists", error);
|
|
23
|
+
if (error instanceof Deno.errors.IsADirectory) return DEither.left("file-system-move-is-directory", error);
|
|
24
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-move-not-directory", error);
|
|
25
|
+
if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-move-invalid-argument", error);
|
|
26
|
+
if (error instanceof Deno.errors.Busy) return DEither.left("file-system-move-busy", error);
|
|
27
|
+
return DEither.left("file-system-move-error", error);
|
|
28
|
+
}
|
|
29
|
+
const moveImplementation = implementFunction("move", {
|
|
30
|
+
NODE: async (fromPath, toPath) => {
|
|
31
|
+
return (await nodeFileSystem.value).rename(fromPath, toPath).then(() => DEither.right("file-system-move")).catch(handleNodeMoveError);
|
|
32
|
+
},
|
|
33
|
+
DENO: (fromPath, toPath) => Deno.rename(fromPath, toPath).then(() => DEither.right("file-system-move")).catch(handleDenoMoveError)
|
|
34
|
+
});
|
|
35
|
+
function move(...args) {
|
|
36
|
+
if (args.length === 1) {
|
|
37
|
+
const [toPath] = args;
|
|
38
|
+
return (fromPath) => moveImplementation(fromPath, toPath);
|
|
39
|
+
}
|
|
40
|
+
return moveImplementation(...args);
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { move };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
|
+
//#region scripts/file/readDirectory.ts
|
|
6
|
+
function handleNodeReadDirectoryError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-read-directory-not-found", error);
|
|
9
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-read-directory-permission-denied", error);
|
|
10
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-read-directory-not-directory", error);
|
|
11
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-read-directory-too-many-open-files", error);
|
|
12
|
+
else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-read-directory-busy", error);
|
|
13
|
+
}
|
|
14
|
+
return _duplojs_lang_either.left("file-system-read-directory-error", error);
|
|
15
|
+
}
|
|
16
|
+
const readDirectory = require_implementor.implementFunction("readDirectory", { NODE: async (path, params) => {
|
|
17
|
+
return (await require_implementor.nodeFileSystem.value).readdir(path, { recursive: params?.recursive }).then((value) => _duplojs_lang_either.right("file-system-read-directory", value)).catch(handleNodeReadDirectoryError);
|
|
18
|
+
} });
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.readDirectory = readDirectory;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import type * as DPath from "@duplojs/lang/path";
|
|
3
|
+
import * as DEither from "@duplojs/lang/either";
|
|
4
|
+
interface ReadDirectoryParams {
|
|
5
|
+
recursive?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export type ReadDirectoryResult = FileSystemEither<DEither.Right<"read-directory", (string & DPath.Path)[]> | DEither.Left<"read-directory-not-found", unknown> | DEither.Left<"read-directory-permission-denied", unknown> | DEither.Left<"read-directory-not-directory", unknown> | DEither.Left<"read-directory-too-many-open-files", unknown> | DEither.Left<"read-directory-busy", unknown> | DEither.Left<"read-directory-error", unknown>>;
|
|
8
|
+
declare module '../implementor' {
|
|
9
|
+
interface ServerFunction {
|
|
10
|
+
readDirectory(path: string & DPath.Path, params?: ReadDirectoryParams): Promise<ReadDirectoryResult>;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare const readDirectory: (path: string & DPath.Path, params?: ReadDirectoryParams) => Promise<ReadDirectoryResult>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
//#region scripts/file/readDirectory.ts
|
|
4
|
+
function handleNodeReadDirectoryError(error) {
|
|
5
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
6
|
+
if (error.code === "ENOENT") return DEither.left("file-system-read-directory-not-found", error);
|
|
7
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-read-directory-permission-denied", error);
|
|
8
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-read-directory-not-directory", error);
|
|
9
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-read-directory-too-many-open-files", error);
|
|
10
|
+
else if (error.code === "EBUSY") return DEither.left("file-system-read-directory-busy", error);
|
|
11
|
+
}
|
|
12
|
+
return DEither.left("file-system-read-directory-error", error);
|
|
13
|
+
}
|
|
14
|
+
const readDirectory = implementFunction("readDirectory", { NODE: async (path, params) => {
|
|
15
|
+
return (await nodeFileSystem.value).readdir(path, { recursive: params?.recursive }).then((value) => DEither.right("file-system-read-directory", value)).catch(handleNodeReadDirectoryError);
|
|
16
|
+
} });
|
|
17
|
+
//#endregion
|
|
18
|
+
export { readDirectory };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_implementor = require("../implementor.cjs");
|
|
3
|
+
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
|
+
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
|
+
//#region scripts/file/readFile.ts
|
|
6
|
+
function handleNodeReadFileError(error) {
|
|
7
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
8
|
+
if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-read-file-not-found", error);
|
|
9
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-read-file-permission-denied", error);
|
|
10
|
+
else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-read-file-is-directory", error);
|
|
11
|
+
else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-read-file-not-directory", error);
|
|
12
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-read-file-too-many-open-files", error);
|
|
13
|
+
else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-read-file-busy", error);
|
|
14
|
+
}
|
|
15
|
+
return _duplojs_lang_either.left("file-system-read-file-error", error);
|
|
16
|
+
}
|
|
17
|
+
function handleDenoReadFileError(error) {
|
|
18
|
+
if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-read-file-not-found", error);
|
|
19
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-read-file-permission-denied", error);
|
|
20
|
+
if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-read-file-is-directory", error);
|
|
21
|
+
if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-read-file-not-directory", error);
|
|
22
|
+
if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-read-file-busy", error);
|
|
23
|
+
return _duplojs_lang_either.left("file-system-read-file-error", error);
|
|
24
|
+
}
|
|
25
|
+
const readFile = require_implementor.implementFunction("readFile", {
|
|
26
|
+
NODE: async (path) => {
|
|
27
|
+
return (await require_implementor.nodeFileSystem.value).readFile(path).then((value) => _duplojs_lang_either.right("file-system-read-file", value)).catch(handleNodeReadFileError);
|
|
28
|
+
},
|
|
29
|
+
DENO: (path) => Deno.readFile(path).then((value) => _duplojs_lang_either.right("file-system-read-file", value)).catch(handleDenoReadFileError),
|
|
30
|
+
BUN: (path) => Bun.file(path).bytes().then((value) => _duplojs_lang_either.right("file-system-read-file", value)).catch(handleNodeReadFileError)
|
|
31
|
+
});
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.readFile = readFile;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FileSystemEither } from './types';
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
import type * as DPath from "@duplojs/lang/path";
|
|
4
|
+
export type ReadFileResult = FileSystemEither<DEither.Right<"read-file", Uint8Array> | DEither.Left<"read-file-not-found", unknown> | DEither.Left<"read-file-permission-denied", unknown> | DEither.Left<"read-file-is-directory", unknown> | DEither.Left<"read-file-not-directory", unknown> | DEither.Left<"read-file-too-many-open-files", unknown> | DEither.Left<"read-file-busy", unknown> | DEither.Left<"read-file-error", unknown>>;
|
|
5
|
+
declare module '../implementor' {
|
|
6
|
+
interface ServerFunction {
|
|
7
|
+
readFile(path: string & DPath.Path): Promise<ReadFileResult>;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare const readFile: (path: string & DPath.Path) => Promise<ReadFileResult>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DEither from "@duplojs/lang/either";
|
|
3
|
+
//#region scripts/file/readFile.ts
|
|
4
|
+
function handleNodeReadFileError(error) {
|
|
5
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
6
|
+
if (error.code === "ENOENT") return DEither.left("file-system-read-file-not-found", error);
|
|
7
|
+
else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-read-file-permission-denied", error);
|
|
8
|
+
else if (error.code === "EISDIR") return DEither.left("file-system-read-file-is-directory", error);
|
|
9
|
+
else if (error.code === "ENOTDIR") return DEither.left("file-system-read-file-not-directory", error);
|
|
10
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-read-file-too-many-open-files", error);
|
|
11
|
+
else if (error.code === "EBUSY") return DEither.left("file-system-read-file-busy", error);
|
|
12
|
+
}
|
|
13
|
+
return DEither.left("file-system-read-file-error", error);
|
|
14
|
+
}
|
|
15
|
+
function handleDenoReadFileError(error) {
|
|
16
|
+
if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-read-file-not-found", error);
|
|
17
|
+
if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-read-file-permission-denied", error);
|
|
18
|
+
if (error instanceof Deno.errors.IsADirectory) return DEither.left("file-system-read-file-is-directory", error);
|
|
19
|
+
if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-read-file-not-directory", error);
|
|
20
|
+
if (error instanceof Deno.errors.Busy) return DEither.left("file-system-read-file-busy", error);
|
|
21
|
+
return DEither.left("file-system-read-file-error", error);
|
|
22
|
+
}
|
|
23
|
+
const readFile = implementFunction("readFile", {
|
|
24
|
+
NODE: async (path) => {
|
|
25
|
+
return (await nodeFileSystem.value).readFile(path).then((value) => DEither.right("file-system-read-file", value)).catch(handleNodeReadFileError);
|
|
26
|
+
},
|
|
27
|
+
DENO: (path) => Deno.readFile(path).then((value) => DEither.right("file-system-read-file", value)).catch(handleDenoReadFileError),
|
|
28
|
+
BUN: (path) => Bun.file(path).bytes().then((value) => DEither.right("file-system-read-file", value)).catch(handleNodeReadFileError)
|
|
29
|
+
});
|
|
30
|
+
//#endregion
|
|
31
|
+
export { readFile };
|