@duplojs/server 0.1.0-beta.1 → 0.1.0-beta.3
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/dist/_virtual/_rolldown/runtime.mjs +5 -1
- package/dist/command/create.cjs +11 -9
- package/dist/command/create.mjs +11 -9
- package/dist/command/error.cjs +2 -2
- package/dist/command/error.mjs +1 -1
- package/dist/command/help.cjs +11 -9
- package/dist/command/help.mjs +10 -8
- package/dist/common/environmentVariable/parseEnvironmentFiles.d.ts +2 -1
- package/dist/common/index.cjs +3 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.mjs +3 -1
- package/dist/common/meta/getCurrentDirectoryName.cjs +10 -0
- package/dist/common/meta/getCurrentDirectoryName.d.ts +7 -0
- package/dist/common/meta/getCurrentDirectoryName.mjs +7 -0
- package/dist/common/meta/index.d.ts +7 -0
- package/dist/dataStructure/common/codec/defaults/json.cjs +12 -1
- package/dist/dataStructure/common/codec/defaults/json.d.ts +2 -2
- package/dist/dataStructure/common/codec/defaults/json.mjs +12 -1
- package/dist/dataStructure/common/codec/defaults/string.cjs +12 -1
- package/dist/dataStructure/common/codec/defaults/string.d.ts +2 -2
- package/dist/dataStructure/common/codec/defaults/string.mjs +12 -1
- package/dist/dataStructure/common/error/defaultInterpreter.cjs +3 -1
- package/dist/dataStructure/common/error/defaultInterpreter.d.ts +7 -2
- package/dist/dataStructure/common/error/defaultInterpreter.mjs +3 -1
- package/dist/dataStructure/constraint/{exist.cjs → fileExist.cjs} +5 -5
- package/dist/dataStructure/constraint/fileExist.d.ts +10 -0
- package/dist/dataStructure/constraint/{exist.mjs → fileExist.mjs} +4 -4
- package/dist/dataStructure/constraint/folderExist.cjs +19 -0
- package/dist/dataStructure/constraint/folderExist.d.ts +10 -0
- package/dist/dataStructure/constraint/folderExist.mjs +15 -0
- package/dist/dataStructure/constraint/index.d.ts +2 -1
- package/dist/dataStructure/constraint/mimeType.cjs +1 -1
- package/dist/dataStructure/constraint/mimeType.mjs +1 -1
- package/dist/dataStructure/constraint/types/constraints.d.ts +4 -2
- package/dist/dataStructure/fundamentalType/folder.cjs +11 -0
- package/dist/dataStructure/fundamentalType/folder.d.ts +8 -0
- package/dist/dataStructure/fundamentalType/folder.mjs +8 -0
- package/dist/dataStructure/fundamentalType/index.d.ts +1 -0
- package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +2 -0
- package/dist/dataStructure/helper/file.d.ts +1 -1
- package/dist/dataStructure/helper/fileExist.cjs +7 -0
- package/dist/dataStructure/helper/fileExist.d.ts +2 -0
- package/dist/dataStructure/helper/fileExist.mjs +7 -0
- package/dist/dataStructure/helper/folder.cjs +10 -0
- package/dist/dataStructure/helper/folder.d.ts +3 -0
- package/dist/dataStructure/helper/folder.mjs +8 -0
- package/dist/dataStructure/helper/folderExist.cjs +7 -0
- package/dist/dataStructure/helper/folderExist.d.ts +2 -0
- package/dist/dataStructure/helper/folderExist.mjs +7 -0
- package/dist/dataStructure/helper/index.d.ts +3 -1
- package/dist/dataStructure/index.cjs +29 -8
- package/dist/dataStructure/index.mjs +19 -6
- package/dist/dataStructure/type/folder.cjs +14 -0
- package/dist/dataStructure/type/folder.d.ts +11 -0
- package/dist/dataStructure/type/folder.mjs +11 -0
- package/dist/dataStructure/type/index.d.ts +1 -0
- package/dist/dataStructure/type/types/types.d.ts +2 -0
- package/dist/file/appendFile.cjs +36 -22
- package/dist/file/appendFile.d.ts +34 -2
- package/dist/file/appendFile.mjs +35 -22
- package/dist/file/appendTextFile.cjs +34 -20
- package/dist/file/appendTextFile.d.ts +34 -2
- package/dist/file/appendTextFile.mjs +33 -20
- package/dist/file/copy.cjs +26 -14
- package/dist/file/copy.d.ts +34 -2
- package/dist/file/copy.mjs +25 -14
- package/dist/file/createEntryInterface.cjs +2 -2
- package/dist/file/createEntryInterface.d.ts +1 -1
- package/dist/file/createEntryInterface.mjs +1 -1
- package/dist/file/ensureDirectory.cjs +29 -17
- package/dist/file/ensureDirectory.d.ts +28 -2
- package/dist/file/ensureDirectory.mjs +28 -17
- package/dist/file/ensureFile.cjs +32 -19
- package/dist/file/ensureFile.d.ts +31 -2
- package/dist/file/ensureFile.mjs +31 -19
- package/dist/file/exists.cjs +23 -14
- package/dist/file/exists.d.ts +19 -2
- package/dist/file/exists.mjs +22 -14
- package/dist/file/fileInterface.cjs +2 -0
- package/dist/file/fileInterface.d.ts +8 -6
- package/dist/file/fileInterface.mjs +2 -1
- package/dist/file/folderInterface.cjs +2 -0
- package/dist/file/folderInterface.d.ts +7 -5
- package/dist/file/folderInterface.mjs +2 -1
- package/dist/file/index.cjs +6 -0
- package/dist/file/index.d.ts +0 -1
- package/dist/file/index.mjs +7 -4
- package/dist/file/link.cjs +37 -22
- package/dist/file/link.d.ts +37 -2
- package/dist/file/link.mjs +36 -22
- package/dist/file/linkStat.cjs +23 -15
- package/dist/file/linkStat.d.ts +22 -2
- package/dist/file/linkStat.mjs +23 -15
- package/dist/file/makeDirectory.cjs +35 -21
- package/dist/file/makeDirectory.d.ts +33 -2
- package/dist/file/makeDirectory.mjs +34 -21
- package/dist/file/makeTemporaryDirectory.cjs +26 -15
- package/dist/file/makeTemporaryDirectory.d.ts +25 -2
- package/dist/file/makeTemporaryDirectory.mjs +25 -15
- package/dist/file/makeTemporaryFile.cjs +29 -20
- package/dist/file/makeTemporaryFile.d.ts +28 -2
- package/dist/file/makeTemporaryFile.mjs +29 -20
- package/dist/file/move.cjs +38 -23
- package/dist/file/move.d.ts +37 -2
- package/dist/file/move.mjs +37 -23
- package/dist/file/readDirectory.cjs +27 -9
- package/dist/file/readDirectory.d.ts +26 -5
- package/dist/file/readDirectory.mjs +24 -9
- package/dist/file/readFile.cjs +28 -17
- package/dist/file/readFile.d.ts +25 -2
- package/dist/file/readFile.mjs +27 -17
- package/dist/file/readJsonFile.cjs +28 -17
- package/dist/file/readJsonFile.d.ts +25 -3
- package/dist/file/readJsonFile.mjs +27 -17
- package/dist/file/readLink.cjs +25 -15
- package/dist/file/readLink.d.ts +22 -2
- package/dist/file/readLink.mjs +24 -15
- package/dist/file/readTextFile.cjs +28 -17
- package/dist/file/readTextFile.d.ts +25 -2
- package/dist/file/readTextFile.mjs +27 -17
- package/dist/file/realPath.cjs +22 -13
- package/dist/file/realPath.d.ts +19 -2
- package/dist/file/realPath.mjs +21 -13
- package/dist/file/relocate.cjs +41 -25
- package/dist/file/relocate.d.ts +37 -2
- package/dist/file/relocate.mjs +40 -25
- package/dist/file/remove.cjs +36 -23
- package/dist/file/remove.d.ts +30 -2
- package/dist/file/remove.mjs +35 -23
- package/dist/file/rename.cjs +41 -25
- package/dist/file/rename.d.ts +37 -2
- package/dist/file/rename.mjs +40 -25
- package/dist/file/setMode.cjs +23 -15
- package/dist/file/setMode.d.ts +21 -2
- package/dist/file/setMode.mjs +23 -15
- package/dist/file/setOwner.cjs +25 -15
- package/dist/file/setOwner.d.ts +22 -2
- package/dist/file/setOwner.mjs +24 -15
- package/dist/file/setTime.cjs +25 -15
- package/dist/file/setTime.d.ts +21 -2
- package/dist/file/setTime.mjs +24 -15
- package/dist/file/stat.cjs +23 -15
- package/dist/file/stat.d.ts +22 -2
- package/dist/file/stat.mjs +23 -15
- package/dist/file/symlink.cjs +33 -20
- package/dist/file/symlink.d.ts +31 -2
- package/dist/file/symlink.mjs +32 -20
- package/dist/file/truncate.cjs +33 -21
- package/dist/file/truncate.d.ts +34 -2
- package/dist/file/truncate.mjs +33 -21
- package/dist/file/unknownEntryInterface.cjs +2 -0
- package/dist/file/unknownEntryInterface.d.ts +7 -5
- package/dist/file/unknownEntryInterface.mjs +2 -1
- package/dist/file/walkDirectory.cjs +28 -15
- package/dist/file/walkDirectory.d.ts +23 -2
- package/dist/file/walkDirectory.mjs +27 -14
- package/dist/file/writeFile.cjs +35 -21
- package/dist/file/writeFile.d.ts +34 -2
- package/dist/file/writeFile.mjs +34 -21
- package/dist/file/writeJsonFile.cjs +38 -27
- package/dist/file/writeJsonFile.d.ts +36 -5
- package/dist/file/writeJsonFile.mjs +38 -27
- package/dist/file/writeTextFile.cjs +35 -21
- package/dist/file/writeTextFile.d.ts +34 -2
- package/dist/file/writeTextFile.mjs +34 -21
- package/dist/implementor.cjs +8 -5
- package/dist/implementor.d.ts +4 -4
- package/dist/implementor.mjs +8 -5
- package/dist/index.cjs +2 -0
- package/dist/index.mjs +2 -1
- package/package.json +4 -4
- package/dist/dataStructure/constraint/exist.d.ts +0 -10
- package/dist/dataStructure/helper/exist.cjs +0 -7
- package/dist/dataStructure/helper/exist.d.ts +0 -2
- package/dist/dataStructure/helper/exist.mjs +0 -7
- package/dist/file/types/fileSystemEither.d.ts +0 -2
- package/dist/file/types/index.d.ts +0 -1
- /package/{README → README.md} +0 -0
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
import { FileInterface } from './fileInterface';
|
|
2
2
|
import { FolderInterface } from './folderInterface';
|
|
3
3
|
import { UnknownEntryInterface } from './unknownEntryInterface';
|
|
4
|
-
import
|
|
4
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
5
5
|
import * as DPath from "@duplojs/lang/path";
|
|
6
6
|
import * as DEither from "@duplojs/lang/either";
|
|
7
|
+
declare const WalkDirectoryErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-not-found", unknown>>, unknown>;
|
|
8
|
+
declare class WalkDirectoryErrorNotFound extends WalkDirectoryErrorNotFound_base {
|
|
9
|
+
}
|
|
10
|
+
declare const WalkDirectoryErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-permission-denied", unknown>>, unknown>;
|
|
11
|
+
declare class WalkDirectoryErrorPermissionDenied extends WalkDirectoryErrorPermissionDenied_base {
|
|
12
|
+
}
|
|
13
|
+
declare const WalkDirectoryErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-not-directory", unknown>>, unknown>;
|
|
14
|
+
declare class WalkDirectoryErrorNotDirectory extends WalkDirectoryErrorNotDirectory_base {
|
|
15
|
+
}
|
|
16
|
+
declare const WalkDirectoryErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-too-many-open-files", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-too-many-open-files", unknown>>, unknown>;
|
|
17
|
+
declare class WalkDirectoryErrorTooManyOpenFiles extends WalkDirectoryErrorTooManyOpenFiles_base {
|
|
18
|
+
}
|
|
19
|
+
declare const WalkDirectoryErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-busy", unknown>>, unknown>;
|
|
20
|
+
declare class WalkDirectoryErrorBusy extends WalkDirectoryErrorBusy_base {
|
|
21
|
+
}
|
|
22
|
+
declare const WalkDirectoryError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-walk-directory-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-walk-directory-error", unknown>>, unknown>;
|
|
23
|
+
declare class WalkDirectoryError extends WalkDirectoryError_base {
|
|
24
|
+
}
|
|
25
|
+
export type WalkDirectoryErrors = (WalkDirectoryErrorNotFound | WalkDirectoryErrorPermissionDenied | WalkDirectoryErrorNotDirectory | WalkDirectoryErrorTooManyOpenFiles | WalkDirectoryErrorBusy | WalkDirectoryError);
|
|
7
26
|
export interface WalkDirectoryParams {
|
|
8
27
|
recursive?: boolean;
|
|
28
|
+
matcher?: DPath.PathMatcher;
|
|
9
29
|
}
|
|
10
|
-
export type WalkDirectoryResult =
|
|
30
|
+
export type WalkDirectoryResult = (DEither.Right<"file-system-walk-directory", Generator<FileInterface<string & DPath.Absolute> | FolderInterface<string & DPath.Absolute> | UnknownEntryInterface<string & DPath.Absolute>>> | DEither.Left<"file-system-walk-directory-error", WalkDirectoryErrors>);
|
|
11
31
|
declare module '../implementor' {
|
|
12
32
|
interface ServerFunction {
|
|
13
33
|
walkDirectory(path: string & DPath.Path, params?: WalkDirectoryParams): Promise<WalkDirectoryResult>;
|
|
14
34
|
}
|
|
15
35
|
}
|
|
16
36
|
export declare const walkDirectory: (path: string & DPath.Path, params?: WalkDirectoryParams) => Promise<WalkDirectoryResult>;
|
|
37
|
+
export {};
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import { getCurrentWorkDirectoryOrThrow } from "../common/getCurrentWorkDirectoryOrThrow.mjs";
|
|
2
3
|
import { createFileInterface } from "./fileInterface.mjs";
|
|
3
4
|
import { createUnknownEntryInterface } from "./unknownEntryInterface.mjs";
|
|
4
5
|
import { createFolderInterface } from "./folderInterface.mjs";
|
|
5
6
|
import * as DCommon from "@duplojs/lang/common";
|
|
7
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
6
8
|
import * as DEither from "@duplojs/lang/either";
|
|
7
9
|
import * as DPath from "@duplojs/lang/path";
|
|
8
|
-
import * as DPattern from "@duplojs/lang/pattern";
|
|
9
10
|
import * as DGenerator from "@duplojs/lang/generator";
|
|
10
11
|
//#region scripts/file/walkDirectory.ts
|
|
12
|
+
var WalkDirectoryErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-not-found", Error) {};
|
|
13
|
+
var WalkDirectoryErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-permission-denied", Error) {};
|
|
14
|
+
var WalkDirectoryErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-not-directory", Error) {};
|
|
15
|
+
var WalkDirectoryErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-too-many-open-files", Error) {};
|
|
16
|
+
var WalkDirectoryErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-busy", Error) {};
|
|
17
|
+
var WalkDirectoryError = class extends DCommon.DuploJSError.parentClass("file-system-walk-directory-error", Error) {};
|
|
11
18
|
function handleNodeWalkDirectoryError(error) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
else if (error.code === "
|
|
16
|
-
else if (error.code === "
|
|
17
|
-
else if (error.code === "
|
|
19
|
+
let walkDirectoryError = void 0;
|
|
20
|
+
if ("code" in error) {
|
|
21
|
+
if (error.code === "ENOENT") walkDirectoryError = new WalkDirectoryErrorNotFound(error);
|
|
22
|
+
else if (error.code === "EACCES" || error.code === "EPERM") walkDirectoryError = new WalkDirectoryErrorPermissionDenied(error);
|
|
23
|
+
else if (error.code === "ENOTDIR") walkDirectoryError = new WalkDirectoryErrorNotDirectory(error);
|
|
24
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") walkDirectoryError = new WalkDirectoryErrorTooManyOpenFiles(error);
|
|
25
|
+
else if (error.code === "EBUSY") walkDirectoryError = new WalkDirectoryErrorBusy(error);
|
|
18
26
|
}
|
|
19
|
-
|
|
27
|
+
if (walkDirectoryError === void 0) walkDirectoryError = new WalkDirectoryError(error);
|
|
28
|
+
return DEither.left("file-system-walk-directory-error", walkDirectoryError);
|
|
20
29
|
}
|
|
21
|
-
const walkDirectory = implementFunction("walkDirectory", { NODE: async (path, params) => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
const walkDirectory = implementFunction("walkDirectory", { NODE: async (path, params) => nodeFileSystem.value.readdir(path, {
|
|
31
|
+
recursive: params?.recursive ?? false,
|
|
32
|
+
withFileTypes: true
|
|
33
|
+
}).then((result) => {
|
|
34
|
+
const currentWorkDirectory = getCurrentWorkDirectoryOrThrow();
|
|
35
|
+
return DCommon.pipe(result, DGenerator.map((dirent) => ({
|
|
36
|
+
dirent,
|
|
37
|
+
path: DPath.resolveFrom(currentWorkDirectory, [DPath.normalize(`${dirent.parentPath}/${dirent.name}`)])
|
|
38
|
+
})), DGenerator.filter((value) => params?.matcher ? params?.matcher(value.path) : true), DGenerator.map(DCommon.innerPipe(DPattern.when(({ dirent }) => dirent.isFile(), ({ path }) => createFileInterface(path)), DPattern.when(({ dirent }) => dirent.isDirectory(), ({ path }) => createFolderInterface(path)), DPattern.otherwise(({ path }) => createUnknownEntryInterface(path)))), (value) => DEither.right("file-system-walk-directory", value));
|
|
39
|
+
}).catch(handleNodeWalkDirectoryError) });
|
|
27
40
|
//#endregion
|
|
28
41
|
export { walkDirectory };
|
package/dist/file/writeFile.cjs
CHANGED
|
@@ -1,35 +1,49 @@
|
|
|
1
1
|
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
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);
|
|
3
5
|
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
4
6
|
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
5
7
|
//#region scripts/file/writeFile.ts
|
|
8
|
+
var WriteFileErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-not-found", Error) {};
|
|
9
|
+
var WriteFileErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-permission-denied", Error) {};
|
|
10
|
+
var WriteFileErrorIsDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-is-directory", Error) {};
|
|
11
|
+
var WriteFileErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-not-directory", Error) {};
|
|
12
|
+
var WriteFileErrorNoSpace = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-no-space", Error) {};
|
|
13
|
+
var WriteFileErrorReadOnly = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-read-only", Error) {};
|
|
14
|
+
var WriteFileErrorInvalidArgument = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-invalid-argument", Error) {};
|
|
15
|
+
var WriteFileErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-too-many-open-files", Error) {};
|
|
16
|
+
var WriteFileErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-busy", Error) {};
|
|
17
|
+
var WriteFileError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-file-error", Error) {};
|
|
6
18
|
function handleNodeWriteFileError(error) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
else if (error.code === "
|
|
11
|
-
else if (error.code === "
|
|
12
|
-
else if (error.code === "
|
|
13
|
-
else if (error.code === "
|
|
14
|
-
else if (error.code === "
|
|
15
|
-
else if (error.code === "
|
|
16
|
-
else if (error.code === "
|
|
19
|
+
let writeFileError = void 0;
|
|
20
|
+
if ("code" in error) {
|
|
21
|
+
if (error.code === "ENOENT") writeFileError = new WriteFileErrorNotFound(error);
|
|
22
|
+
else if (error.code === "EACCES" || error.code === "EPERM") writeFileError = new WriteFileErrorPermissionDenied(error);
|
|
23
|
+
else if (error.code === "EISDIR") writeFileError = new WriteFileErrorIsDirectory(error);
|
|
24
|
+
else if (error.code === "ENOTDIR") writeFileError = new WriteFileErrorNotDirectory(error);
|
|
25
|
+
else if (error.code === "ENOSPC") writeFileError = new WriteFileErrorNoSpace(error);
|
|
26
|
+
else if (error.code === "EROFS") writeFileError = new WriteFileErrorReadOnly(error);
|
|
27
|
+
else if (error.code === "EINVAL") writeFileError = new WriteFileErrorInvalidArgument(error);
|
|
28
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") writeFileError = new WriteFileErrorTooManyOpenFiles(error);
|
|
29
|
+
else if (error.code === "EBUSY") writeFileError = new WriteFileErrorBusy(error);
|
|
17
30
|
}
|
|
18
|
-
|
|
31
|
+
if (writeFileError === void 0) writeFileError = new WriteFileError(error);
|
|
32
|
+
return _duplojs_lang_either.left("file-system-write-file-error", writeFileError);
|
|
19
33
|
}
|
|
20
34
|
function handleDenoWriteFileError(error) {
|
|
21
|
-
|
|
22
|
-
if (error instanceof Deno.errors.
|
|
23
|
-
if (error instanceof Deno.errors.
|
|
24
|
-
if (error instanceof Deno.errors.
|
|
25
|
-
if (error instanceof Deno.errors.
|
|
26
|
-
if (error instanceof Deno.errors.
|
|
27
|
-
|
|
35
|
+
let writeFileError = void 0;
|
|
36
|
+
if (error instanceof Deno.errors.NotFound) writeFileError = new WriteFileErrorNotFound(error);
|
|
37
|
+
else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) writeFileError = new WriteFileErrorPermissionDenied(error);
|
|
38
|
+
else if (error instanceof Deno.errors.IsADirectory) writeFileError = new WriteFileErrorIsDirectory(error);
|
|
39
|
+
else if (error instanceof Deno.errors.NotADirectory) writeFileError = new WriteFileErrorNotDirectory(error);
|
|
40
|
+
else if (error instanceof Deno.errors.InvalidData) writeFileError = new WriteFileErrorInvalidArgument(error);
|
|
41
|
+
else if (error instanceof Deno.errors.Busy) writeFileError = new WriteFileErrorBusy(error);
|
|
42
|
+
if (writeFileError === void 0) writeFileError = new WriteFileError(error);
|
|
43
|
+
return _duplojs_lang_either.left("file-system-write-file-error", writeFileError);
|
|
28
44
|
}
|
|
29
45
|
const writeFileImplementation = require_implementor.implementFunction("writeFile", {
|
|
30
|
-
NODE: async (path, data) =>
|
|
31
|
-
return (await require_implementor.nodeFileSystem.value).writeFile(path, data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleNodeWriteFileError);
|
|
32
|
-
},
|
|
46
|
+
NODE: async (path, data) => require_implementor.nodeFileSystem.value.writeFile(path, data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleNodeWriteFileError),
|
|
33
47
|
DENO: (path, data) => Deno.writeFile(path, data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleDenoWriteFileError),
|
|
34
48
|
BUN: (path, data) => Bun.file(path).write(data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleNodeWriteFileError)
|
|
35
49
|
});
|
package/dist/file/writeFile.d.ts
CHANGED
|
@@ -1,7 +1,38 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
2
2
|
import * as DEither from "@duplojs/lang/either";
|
|
3
3
|
import type * as DPath from "@duplojs/lang/path";
|
|
4
|
-
|
|
4
|
+
declare const WriteFileErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-not-found", unknown>>, unknown>;
|
|
5
|
+
declare class WriteFileErrorNotFound extends WriteFileErrorNotFound_base {
|
|
6
|
+
}
|
|
7
|
+
declare const WriteFileErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-permission-denied", unknown>>, unknown>;
|
|
8
|
+
declare class WriteFileErrorPermissionDenied extends WriteFileErrorPermissionDenied_base {
|
|
9
|
+
}
|
|
10
|
+
declare const WriteFileErrorIsDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-is-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-is-directory", unknown>>, unknown>;
|
|
11
|
+
declare class WriteFileErrorIsDirectory extends WriteFileErrorIsDirectory_base {
|
|
12
|
+
}
|
|
13
|
+
declare const WriteFileErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-not-directory", unknown>>, unknown>;
|
|
14
|
+
declare class WriteFileErrorNotDirectory extends WriteFileErrorNotDirectory_base {
|
|
15
|
+
}
|
|
16
|
+
declare const WriteFileErrorNoSpace_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-no-space", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-no-space", unknown>>, unknown>;
|
|
17
|
+
declare class WriteFileErrorNoSpace extends WriteFileErrorNoSpace_base {
|
|
18
|
+
}
|
|
19
|
+
declare const WriteFileErrorReadOnly_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-read-only", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-read-only", unknown>>, unknown>;
|
|
20
|
+
declare class WriteFileErrorReadOnly extends WriteFileErrorReadOnly_base {
|
|
21
|
+
}
|
|
22
|
+
declare const WriteFileErrorInvalidArgument_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-invalid-argument", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-invalid-argument", unknown>>, unknown>;
|
|
23
|
+
declare class WriteFileErrorInvalidArgument extends WriteFileErrorInvalidArgument_base {
|
|
24
|
+
}
|
|
25
|
+
declare const WriteFileErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-too-many-open-files", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-too-many-open-files", unknown>>, unknown>;
|
|
26
|
+
declare class WriteFileErrorTooManyOpenFiles extends WriteFileErrorTooManyOpenFiles_base {
|
|
27
|
+
}
|
|
28
|
+
declare const WriteFileErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-busy", unknown>>, unknown>;
|
|
29
|
+
declare class WriteFileErrorBusy extends WriteFileErrorBusy_base {
|
|
30
|
+
}
|
|
31
|
+
declare const WriteFileError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-file-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-file-error", unknown>>, unknown>;
|
|
32
|
+
declare class WriteFileError extends WriteFileError_base {
|
|
33
|
+
}
|
|
34
|
+
export type WriteFileErrors = (WriteFileErrorNotFound | WriteFileErrorPermissionDenied | WriteFileErrorIsDirectory | WriteFileErrorNotDirectory | WriteFileErrorNoSpace | WriteFileErrorReadOnly | WriteFileErrorInvalidArgument | WriteFileErrorTooManyOpenFiles | WriteFileErrorBusy | WriteFileError);
|
|
35
|
+
export type WriteFileResult = (DEither.Right<"file-system-write-file", void> | DEither.Left<"file-system-write-file-error", WriteFileErrors>);
|
|
5
36
|
declare module '../implementor' {
|
|
6
37
|
interface ServerFunction {
|
|
7
38
|
writeFile(path: string & DPath.Path, data: Uint8Array): Promise<WriteFileResult>;
|
|
@@ -9,3 +40,4 @@ declare module '../implementor' {
|
|
|
9
40
|
}
|
|
10
41
|
export declare function writeFile(data: Uint8Array): (path: string & DPath.Path) => Promise<WriteFileResult>;
|
|
11
42
|
export declare function writeFile(path: string & DPath.Path, data: Uint8Array): Promise<WriteFileResult>;
|
|
43
|
+
export {};
|
package/dist/file/writeFile.mjs
CHANGED
|
@@ -1,33 +1,46 @@
|
|
|
1
1
|
import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
2
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
2
3
|
import * as DEither from "@duplojs/lang/either";
|
|
3
4
|
//#region scripts/file/writeFile.ts
|
|
5
|
+
var WriteFileErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-write-file-not-found", Error) {};
|
|
6
|
+
var WriteFileErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-write-file-permission-denied", Error) {};
|
|
7
|
+
var WriteFileErrorIsDirectory = class extends DCommon.DuploJSError.parentClass("file-system-write-file-is-directory", Error) {};
|
|
8
|
+
var WriteFileErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-write-file-not-directory", Error) {};
|
|
9
|
+
var WriteFileErrorNoSpace = class extends DCommon.DuploJSError.parentClass("file-system-write-file-no-space", Error) {};
|
|
10
|
+
var WriteFileErrorReadOnly = class extends DCommon.DuploJSError.parentClass("file-system-write-file-read-only", Error) {};
|
|
11
|
+
var WriteFileErrorInvalidArgument = class extends DCommon.DuploJSError.parentClass("file-system-write-file-invalid-argument", Error) {};
|
|
12
|
+
var WriteFileErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-write-file-too-many-open-files", Error) {};
|
|
13
|
+
var WriteFileErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-write-file-busy", Error) {};
|
|
14
|
+
var WriteFileError = class extends DCommon.DuploJSError.parentClass("file-system-write-file-error", Error) {};
|
|
4
15
|
function handleNodeWriteFileError(error) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
else if (error.code === "
|
|
9
|
-
else if (error.code === "
|
|
10
|
-
else if (error.code === "
|
|
11
|
-
else if (error.code === "
|
|
12
|
-
else if (error.code === "
|
|
13
|
-
else if (error.code === "
|
|
14
|
-
else if (error.code === "
|
|
16
|
+
let writeFileError = void 0;
|
|
17
|
+
if ("code" in error) {
|
|
18
|
+
if (error.code === "ENOENT") writeFileError = new WriteFileErrorNotFound(error);
|
|
19
|
+
else if (error.code === "EACCES" || error.code === "EPERM") writeFileError = new WriteFileErrorPermissionDenied(error);
|
|
20
|
+
else if (error.code === "EISDIR") writeFileError = new WriteFileErrorIsDirectory(error);
|
|
21
|
+
else if (error.code === "ENOTDIR") writeFileError = new WriteFileErrorNotDirectory(error);
|
|
22
|
+
else if (error.code === "ENOSPC") writeFileError = new WriteFileErrorNoSpace(error);
|
|
23
|
+
else if (error.code === "EROFS") writeFileError = new WriteFileErrorReadOnly(error);
|
|
24
|
+
else if (error.code === "EINVAL") writeFileError = new WriteFileErrorInvalidArgument(error);
|
|
25
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") writeFileError = new WriteFileErrorTooManyOpenFiles(error);
|
|
26
|
+
else if (error.code === "EBUSY") writeFileError = new WriteFileErrorBusy(error);
|
|
15
27
|
}
|
|
16
|
-
|
|
28
|
+
if (writeFileError === void 0) writeFileError = new WriteFileError(error);
|
|
29
|
+
return DEither.left("file-system-write-file-error", writeFileError);
|
|
17
30
|
}
|
|
18
31
|
function handleDenoWriteFileError(error) {
|
|
19
|
-
|
|
20
|
-
if (error instanceof Deno.errors.
|
|
21
|
-
if (error instanceof Deno.errors.
|
|
22
|
-
if (error instanceof Deno.errors.
|
|
23
|
-
if (error instanceof Deno.errors.
|
|
24
|
-
if (error instanceof Deno.errors.
|
|
25
|
-
|
|
32
|
+
let writeFileError = void 0;
|
|
33
|
+
if (error instanceof Deno.errors.NotFound) writeFileError = new WriteFileErrorNotFound(error);
|
|
34
|
+
else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) writeFileError = new WriteFileErrorPermissionDenied(error);
|
|
35
|
+
else if (error instanceof Deno.errors.IsADirectory) writeFileError = new WriteFileErrorIsDirectory(error);
|
|
36
|
+
else if (error instanceof Deno.errors.NotADirectory) writeFileError = new WriteFileErrorNotDirectory(error);
|
|
37
|
+
else if (error instanceof Deno.errors.InvalidData) writeFileError = new WriteFileErrorInvalidArgument(error);
|
|
38
|
+
else if (error instanceof Deno.errors.Busy) writeFileError = new WriteFileErrorBusy(error);
|
|
39
|
+
if (writeFileError === void 0) writeFileError = new WriteFileError(error);
|
|
40
|
+
return DEither.left("file-system-write-file-error", writeFileError);
|
|
26
41
|
}
|
|
27
42
|
const writeFileImplementation = implementFunction("writeFile", {
|
|
28
|
-
NODE: async (path, data) =>
|
|
29
|
-
return (await nodeFileSystem.value).writeFile(path, data).then(() => DEither.right("file-system-write-file")).catch(handleNodeWriteFileError);
|
|
30
|
-
},
|
|
43
|
+
NODE: async (path, data) => nodeFileSystem.value.writeFile(path, data).then(() => DEither.right("file-system-write-file")).catch(handleNodeWriteFileError),
|
|
31
44
|
DENO: (path, data) => Deno.writeFile(path, data).then(() => DEither.right("file-system-write-file")).catch(handleDenoWriteFileError),
|
|
32
45
|
BUN: (path, data) => Bun.file(path).write(data).then(() => DEither.right("file-system-write-file")).catch(handleNodeWriteFileError)
|
|
33
46
|
});
|
|
@@ -5,43 +5,54 @@ _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
|
|
|
5
5
|
let _duplojs_lang_either = require("@duplojs/lang/either");
|
|
6
6
|
_duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
|
|
7
7
|
//#region scripts/file/writeJsonFile.ts
|
|
8
|
+
var WriteJsonFileErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-not-found", Error) {};
|
|
9
|
+
var WriteJsonFileErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-permission-denied", Error) {};
|
|
10
|
+
var WriteJsonFileErrorIsDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-is-directory", Error) {};
|
|
11
|
+
var WriteJsonFileErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-not-directory", Error) {};
|
|
12
|
+
var WriteJsonFileErrorNoSpace = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-no-space", Error) {};
|
|
13
|
+
var WriteJsonFileErrorReadOnly = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-read-only", Error) {};
|
|
14
|
+
var WriteJsonFileErrorInvalidArgument = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-invalid-argument", Error) {};
|
|
15
|
+
var WriteJsonFileErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-too-many-open-files", Error) {};
|
|
16
|
+
var WriteJsonFileErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-busy", Error) {};
|
|
17
|
+
var WriteJsonFileError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-write-json-file-error", Error) {};
|
|
8
18
|
function handleNodeWriteJsonFileError(error) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
else if (error.code === "
|
|
13
|
-
else if (error.code === "
|
|
14
|
-
else if (error.code === "
|
|
15
|
-
else if (error.code === "
|
|
16
|
-
else if (error.code === "
|
|
17
|
-
else if (error.code === "
|
|
18
|
-
else if (error.code === "
|
|
19
|
+
let writeJsonFileError = void 0;
|
|
20
|
+
if ("code" in error) {
|
|
21
|
+
if (error.code === "ENOENT") writeJsonFileError = new WriteJsonFileErrorNotFound(error);
|
|
22
|
+
else if (error.code === "EACCES" || error.code === "EPERM") writeJsonFileError = new WriteJsonFileErrorPermissionDenied(error);
|
|
23
|
+
else if (error.code === "EISDIR") writeJsonFileError = new WriteJsonFileErrorIsDirectory(error);
|
|
24
|
+
else if (error.code === "ENOTDIR") writeJsonFileError = new WriteJsonFileErrorNotDirectory(error);
|
|
25
|
+
else if (error.code === "ENOSPC") writeJsonFileError = new WriteJsonFileErrorNoSpace(error);
|
|
26
|
+
else if (error.code === "EROFS") writeJsonFileError = new WriteJsonFileErrorReadOnly(error);
|
|
27
|
+
else if (error.code === "EINVAL") writeJsonFileError = new WriteJsonFileErrorInvalidArgument(error);
|
|
28
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") writeJsonFileError = new WriteJsonFileErrorTooManyOpenFiles(error);
|
|
29
|
+
else if (error.code === "EBUSY") writeJsonFileError = new WriteJsonFileErrorBusy(error);
|
|
19
30
|
}
|
|
20
|
-
|
|
31
|
+
if (writeJsonFileError === void 0) writeJsonFileError = new WriteJsonFileError(error);
|
|
32
|
+
return _duplojs_lang_either.left("file-system-write-json-file-error", writeJsonFileError);
|
|
21
33
|
}
|
|
22
34
|
function handleDenoWriteJsonFileError(error) {
|
|
23
|
-
|
|
24
|
-
if (error instanceof Deno.errors.
|
|
25
|
-
if (error instanceof Deno.errors.
|
|
26
|
-
if (error instanceof Deno.errors.
|
|
27
|
-
if (error instanceof Deno.errors.
|
|
28
|
-
if (error instanceof Deno.errors.
|
|
29
|
-
|
|
35
|
+
let writeJsonFileError = void 0;
|
|
36
|
+
if (error instanceof Deno.errors.NotFound) writeJsonFileError = new WriteJsonFileErrorNotFound(error);
|
|
37
|
+
else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) writeJsonFileError = new WriteJsonFileErrorPermissionDenied(error);
|
|
38
|
+
else if (error instanceof Deno.errors.IsADirectory) writeJsonFileError = new WriteJsonFileErrorIsDirectory(error);
|
|
39
|
+
else if (error instanceof Deno.errors.NotADirectory) writeJsonFileError = new WriteJsonFileErrorNotDirectory(error);
|
|
40
|
+
else if (error instanceof Deno.errors.InvalidData) writeJsonFileError = new WriteJsonFileErrorInvalidArgument(error);
|
|
41
|
+
else if (error instanceof Deno.errors.Busy) writeJsonFileError = new WriteJsonFileErrorBusy(error);
|
|
42
|
+
if (writeJsonFileError === void 0) writeJsonFileError = new WriteJsonFileError(error);
|
|
43
|
+
return _duplojs_lang_either.left("file-system-write-json-file-error", writeJsonFileError);
|
|
30
44
|
}
|
|
31
45
|
const writeJsonFileImplementation = require_implementor.implementFunction("writeJsonFile", {
|
|
32
|
-
NODE: async (path, data, params) => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"safe-callback-success": (value) => fs.writeFile(path, value, { encoding: "utf-8" }).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
37
|
-
}));
|
|
38
|
-
},
|
|
46
|
+
NODE: async (path, data, params) => _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
|
|
47
|
+
"safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
48
|
+
"safe-callback-success": (value) => require_implementor.nodeFileSystem.value.writeFile(path, value, { encoding: "utf-8" }).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
49
|
+
})),
|
|
39
50
|
DENO: async (path, data, params) => _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
|
|
40
|
-
"safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", value),
|
|
51
|
+
"safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
41
52
|
"safe-callback-success": (value) => Deno.writeTextFile(path, value).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleDenoWriteJsonFileError)
|
|
42
53
|
})),
|
|
43
54
|
BUN: async (path, data, params) => _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
|
|
44
|
-
"safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", value),
|
|
55
|
+
"safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
45
56
|
"safe-callback-success": (value) => Bun.file(path).write(value).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
46
57
|
}))
|
|
47
58
|
});
|
|
@@ -1,15 +1,46 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as DCommon from "@duplojs/lang/common";
|
|
2
2
|
import * as DEither from "@duplojs/lang/either";
|
|
3
3
|
import type * as DPath from "@duplojs/lang/path";
|
|
4
|
-
interface
|
|
4
|
+
interface WriteJsonFileParams {
|
|
5
5
|
space?: number;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
declare const WriteJsonFileErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-not-found", unknown>>, unknown>;
|
|
8
|
+
declare class WriteJsonFileErrorNotFound extends WriteJsonFileErrorNotFound_base {
|
|
9
|
+
}
|
|
10
|
+
declare const WriteJsonFileErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-permission-denied", unknown>>, unknown>;
|
|
11
|
+
declare class WriteJsonFileErrorPermissionDenied extends WriteJsonFileErrorPermissionDenied_base {
|
|
12
|
+
}
|
|
13
|
+
declare const WriteJsonFileErrorIsDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-is-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-is-directory", unknown>>, unknown>;
|
|
14
|
+
declare class WriteJsonFileErrorIsDirectory extends WriteJsonFileErrorIsDirectory_base {
|
|
15
|
+
}
|
|
16
|
+
declare const WriteJsonFileErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-not-directory", unknown>>, unknown>;
|
|
17
|
+
declare class WriteJsonFileErrorNotDirectory extends WriteJsonFileErrorNotDirectory_base {
|
|
18
|
+
}
|
|
19
|
+
declare const WriteJsonFileErrorNoSpace_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-no-space", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-no-space", unknown>>, unknown>;
|
|
20
|
+
declare class WriteJsonFileErrorNoSpace extends WriteJsonFileErrorNoSpace_base {
|
|
21
|
+
}
|
|
22
|
+
declare const WriteJsonFileErrorReadOnly_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-read-only", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-read-only", unknown>>, unknown>;
|
|
23
|
+
declare class WriteJsonFileErrorReadOnly extends WriteJsonFileErrorReadOnly_base {
|
|
24
|
+
}
|
|
25
|
+
declare const WriteJsonFileErrorInvalidArgument_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-invalid-argument", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-invalid-argument", unknown>>, unknown>;
|
|
26
|
+
declare class WriteJsonFileErrorInvalidArgument extends WriteJsonFileErrorInvalidArgument_base {
|
|
27
|
+
}
|
|
28
|
+
declare const WriteJsonFileErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-too-many-open-files", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-too-many-open-files", unknown>>, unknown>;
|
|
29
|
+
declare class WriteJsonFileErrorTooManyOpenFiles extends WriteJsonFileErrorTooManyOpenFiles_base {
|
|
30
|
+
}
|
|
31
|
+
declare const WriteJsonFileErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-busy", unknown>>, unknown>;
|
|
32
|
+
declare class WriteJsonFileErrorBusy extends WriteJsonFileErrorBusy_base {
|
|
33
|
+
}
|
|
34
|
+
declare const WriteJsonFileError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-write-json-file-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-write-json-file-error", unknown>>, unknown>;
|
|
35
|
+
declare class WriteJsonFileError extends WriteJsonFileError_base {
|
|
36
|
+
}
|
|
37
|
+
export type WriteJsonFileErrors = (WriteJsonFileErrorNotFound | WriteJsonFileErrorPermissionDenied | WriteJsonFileErrorIsDirectory | WriteJsonFileErrorNotDirectory | WriteJsonFileErrorNoSpace | WriteJsonFileErrorReadOnly | WriteJsonFileErrorInvalidArgument | WriteJsonFileErrorTooManyOpenFiles | WriteJsonFileErrorBusy | WriteJsonFileError);
|
|
38
|
+
export type WriteJsonFileResult = (DEither.Right<"file-system-write-json-file", void> | DEither.Left<"file-system-write-json-file-error", WriteJsonFileErrors>);
|
|
8
39
|
declare module '../implementor' {
|
|
9
40
|
interface ServerFunction {
|
|
10
|
-
writeJsonFile(path: string & DPath.Path, data: unknown, params?:
|
|
41
|
+
writeJsonFile(path: string & DPath.Path, data: unknown, params?: WriteJsonFileParams): Promise<WriteJsonFileResult>;
|
|
11
42
|
}
|
|
12
43
|
}
|
|
13
44
|
export declare function writeJsonFile(data: unknown): (path: string & DPath.Path) => Promise<WriteJsonFileResult>;
|
|
14
|
-
export declare function writeJsonFile(path: string & DPath.Path, data: unknown, params?:
|
|
45
|
+
export declare function writeJsonFile(path: string & DPath.Path, data: unknown, params?: WriteJsonFileParams): Promise<WriteJsonFileResult>;
|
|
15
46
|
export {};
|
|
@@ -2,43 +2,54 @@ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
|
|
|
2
2
|
import * as DCommon from "@duplojs/lang/common";
|
|
3
3
|
import * as DEither from "@duplojs/lang/either";
|
|
4
4
|
//#region scripts/file/writeJsonFile.ts
|
|
5
|
+
var WriteJsonFileErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-not-found", Error) {};
|
|
6
|
+
var WriteJsonFileErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-permission-denied", Error) {};
|
|
7
|
+
var WriteJsonFileErrorIsDirectory = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-is-directory", Error) {};
|
|
8
|
+
var WriteJsonFileErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-not-directory", Error) {};
|
|
9
|
+
var WriteJsonFileErrorNoSpace = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-no-space", Error) {};
|
|
10
|
+
var WriteJsonFileErrorReadOnly = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-read-only", Error) {};
|
|
11
|
+
var WriteJsonFileErrorInvalidArgument = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-invalid-argument", Error) {};
|
|
12
|
+
var WriteJsonFileErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-too-many-open-files", Error) {};
|
|
13
|
+
var WriteJsonFileErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-busy", Error) {};
|
|
14
|
+
var WriteJsonFileError = class extends DCommon.DuploJSError.parentClass("file-system-write-json-file-error", Error) {};
|
|
5
15
|
function handleNodeWriteJsonFileError(error) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
else if (error.code === "
|
|
10
|
-
else if (error.code === "
|
|
11
|
-
else if (error.code === "
|
|
12
|
-
else if (error.code === "
|
|
13
|
-
else if (error.code === "
|
|
14
|
-
else if (error.code === "
|
|
15
|
-
else if (error.code === "
|
|
16
|
+
let writeJsonFileError = void 0;
|
|
17
|
+
if ("code" in error) {
|
|
18
|
+
if (error.code === "ENOENT") writeJsonFileError = new WriteJsonFileErrorNotFound(error);
|
|
19
|
+
else if (error.code === "EACCES" || error.code === "EPERM") writeJsonFileError = new WriteJsonFileErrorPermissionDenied(error);
|
|
20
|
+
else if (error.code === "EISDIR") writeJsonFileError = new WriteJsonFileErrorIsDirectory(error);
|
|
21
|
+
else if (error.code === "ENOTDIR") writeJsonFileError = new WriteJsonFileErrorNotDirectory(error);
|
|
22
|
+
else if (error.code === "ENOSPC") writeJsonFileError = new WriteJsonFileErrorNoSpace(error);
|
|
23
|
+
else if (error.code === "EROFS") writeJsonFileError = new WriteJsonFileErrorReadOnly(error);
|
|
24
|
+
else if (error.code === "EINVAL") writeJsonFileError = new WriteJsonFileErrorInvalidArgument(error);
|
|
25
|
+
else if (error.code === "EMFILE" || error.code === "ENFILE") writeJsonFileError = new WriteJsonFileErrorTooManyOpenFiles(error);
|
|
26
|
+
else if (error.code === "EBUSY") writeJsonFileError = new WriteJsonFileErrorBusy(error);
|
|
16
27
|
}
|
|
17
|
-
|
|
28
|
+
if (writeJsonFileError === void 0) writeJsonFileError = new WriteJsonFileError(error);
|
|
29
|
+
return DEither.left("file-system-write-json-file-error", writeJsonFileError);
|
|
18
30
|
}
|
|
19
31
|
function handleDenoWriteJsonFileError(error) {
|
|
20
|
-
|
|
21
|
-
if (error instanceof Deno.errors.
|
|
22
|
-
if (error instanceof Deno.errors.
|
|
23
|
-
if (error instanceof Deno.errors.
|
|
24
|
-
if (error instanceof Deno.errors.
|
|
25
|
-
if (error instanceof Deno.errors.
|
|
26
|
-
|
|
32
|
+
let writeJsonFileError = void 0;
|
|
33
|
+
if (error instanceof Deno.errors.NotFound) writeJsonFileError = new WriteJsonFileErrorNotFound(error);
|
|
34
|
+
else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) writeJsonFileError = new WriteJsonFileErrorPermissionDenied(error);
|
|
35
|
+
else if (error instanceof Deno.errors.IsADirectory) writeJsonFileError = new WriteJsonFileErrorIsDirectory(error);
|
|
36
|
+
else if (error instanceof Deno.errors.NotADirectory) writeJsonFileError = new WriteJsonFileErrorNotDirectory(error);
|
|
37
|
+
else if (error instanceof Deno.errors.InvalidData) writeJsonFileError = new WriteJsonFileErrorInvalidArgument(error);
|
|
38
|
+
else if (error instanceof Deno.errors.Busy) writeJsonFileError = new WriteJsonFileErrorBusy(error);
|
|
39
|
+
if (writeJsonFileError === void 0) writeJsonFileError = new WriteJsonFileError(error);
|
|
40
|
+
return DEither.left("file-system-write-json-file-error", writeJsonFileError);
|
|
27
41
|
}
|
|
28
42
|
const writeJsonFileImplementation = implementFunction("writeJsonFile", {
|
|
29
|
-
NODE: async (path, data, params) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"safe-callback-success": (value) => fs.writeFile(path, value, { encoding: "utf-8" }).then(() => DEither.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
34
|
-
}));
|
|
35
|
-
},
|
|
43
|
+
NODE: async (path, data, params) => DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
|
|
44
|
+
"safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
45
|
+
"safe-callback-success": (value) => nodeFileSystem.value.writeFile(path, value, { encoding: "utf-8" }).then(() => DEither.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
46
|
+
})),
|
|
36
47
|
DENO: async (path, data, params) => DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
|
|
37
|
-
"safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", value),
|
|
48
|
+
"safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
38
49
|
"safe-callback-success": (value) => Deno.writeTextFile(path, value).then(() => DEither.right("file-system-write-json-file")).catch(handleDenoWriteJsonFileError)
|
|
39
50
|
})),
|
|
40
51
|
BUN: async (path, data, params) => DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
|
|
41
|
-
"safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", value),
|
|
52
|
+
"safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", new WriteJsonFileError(value)),
|
|
42
53
|
"safe-callback-success": (value) => Bun.file(path).write(value).then(() => DEither.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
|
|
43
54
|
}))
|
|
44
55
|
});
|