@duplojs/server 0.1.0-beta.2 → 0.1.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +5 -1
  2. package/dist/command/argument.d.ts +2 -2
  3. package/dist/command/create.cjs +18 -10
  4. package/dist/command/create.d.ts +3 -3
  5. package/dist/command/create.mjs +18 -10
  6. package/dist/command/error.cjs +26 -2
  7. package/dist/command/error.d.ts +9 -1
  8. package/dist/command/error.mjs +25 -1
  9. package/dist/command/exec.d.ts +4 -3
  10. package/dist/command/help.cjs +11 -9
  11. package/dist/command/help.d.ts +1 -1
  12. package/dist/command/help.mjs +10 -8
  13. package/dist/command/index.cjs +4 -0
  14. package/dist/command/index.mjs +4 -2
  15. package/dist/command/options/base.cjs +21 -13
  16. package/dist/command/options/base.d.ts +6 -0
  17. package/dist/command/options/base.mjs +20 -14
  18. package/dist/command/options/defaults/array.d.ts +6 -4
  19. package/dist/command/options/defaults/boolean.cjs +21 -7
  20. package/dist/command/options/defaults/boolean.d.ts +6 -3
  21. package/dist/command/options/defaults/boolean.mjs +20 -8
  22. package/dist/command/options/defaults/simple.d.ts +6 -4
  23. package/dist/command/types/forbiddenInvalidIdentifier.d.ts +6 -0
  24. package/dist/command/types/index.d.ts +1 -0
  25. package/dist/common/environmentVariable/index.d.ts +1 -1
  26. package/dist/common/environmentVariable/overrideEnvironmentVariables.d.ts +1 -1
  27. package/dist/common/environmentVariable/parseEnvironmentFiles.d.ts +2 -1
  28. package/dist/common/index.cjs +3 -0
  29. package/dist/common/index.d.ts +1 -0
  30. package/dist/common/index.mjs +3 -1
  31. package/dist/common/meta/getCurrentDirectoryName.cjs +10 -0
  32. package/dist/common/meta/getCurrentDirectoryName.d.ts +7 -0
  33. package/dist/common/meta/getCurrentDirectoryName.mjs +7 -0
  34. package/dist/common/meta/index.d.ts +7 -0
  35. package/dist/dataStructure/common/codec/defaults/json.cjs +12 -1
  36. package/dist/dataStructure/common/codec/defaults/json.d.ts +2 -2
  37. package/dist/dataStructure/common/codec/defaults/json.mjs +12 -1
  38. package/dist/dataStructure/common/codec/defaults/string.cjs +12 -1
  39. package/dist/dataStructure/common/codec/defaults/string.d.ts +2 -2
  40. package/dist/dataStructure/common/codec/defaults/string.mjs +12 -1
  41. package/dist/dataStructure/common/error/defaultInterpreter.cjs +3 -1
  42. package/dist/dataStructure/common/error/defaultInterpreter.d.ts +7 -2
  43. package/dist/dataStructure/common/error/defaultInterpreter.mjs +3 -1
  44. package/dist/dataStructure/constraint/{exist.cjs → fileExist.cjs} +5 -5
  45. package/dist/dataStructure/constraint/fileExist.d.ts +10 -0
  46. package/dist/dataStructure/constraint/{exist.mjs → fileExist.mjs} +4 -4
  47. package/dist/dataStructure/constraint/folderExist.cjs +19 -0
  48. package/dist/dataStructure/constraint/folderExist.d.ts +10 -0
  49. package/dist/dataStructure/constraint/folderExist.mjs +15 -0
  50. package/dist/dataStructure/constraint/index.d.ts +2 -1
  51. package/dist/dataStructure/constraint/mimeType.cjs +1 -1
  52. package/dist/dataStructure/constraint/mimeType.mjs +1 -1
  53. package/dist/dataStructure/constraint/types/constraints.d.ts +4 -2
  54. package/dist/dataStructure/fundamentalType/folder.cjs +11 -0
  55. package/dist/dataStructure/fundamentalType/folder.d.ts +8 -0
  56. package/dist/dataStructure/fundamentalType/folder.mjs +8 -0
  57. package/dist/dataStructure/fundamentalType/index.d.ts +1 -0
  58. package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +2 -0
  59. package/dist/dataStructure/helper/file.d.ts +1 -1
  60. package/dist/dataStructure/helper/fileExist.cjs +7 -0
  61. package/dist/dataStructure/helper/fileExist.d.ts +2 -0
  62. package/dist/dataStructure/helper/fileExist.mjs +7 -0
  63. package/dist/dataStructure/helper/folder.cjs +10 -0
  64. package/dist/dataStructure/helper/folder.d.ts +3 -0
  65. package/dist/dataStructure/helper/folder.mjs +8 -0
  66. package/dist/dataStructure/helper/folderExist.cjs +7 -0
  67. package/dist/dataStructure/helper/folderExist.d.ts +2 -0
  68. package/dist/dataStructure/helper/folderExist.mjs +7 -0
  69. package/dist/dataStructure/helper/index.d.ts +3 -1
  70. package/dist/dataStructure/index.cjs +29 -8
  71. package/dist/dataStructure/index.mjs +19 -6
  72. package/dist/dataStructure/type/folder.cjs +14 -0
  73. package/dist/dataStructure/type/folder.d.ts +11 -0
  74. package/dist/dataStructure/type/folder.mjs +11 -0
  75. package/dist/dataStructure/type/index.d.ts +1 -0
  76. package/dist/dataStructure/type/types/types.d.ts +2 -0
  77. package/dist/file/appendFile.cjs +46 -22
  78. package/dist/file/appendFile.d.ts +37 -5
  79. package/dist/file/appendFile.mjs +36 -23
  80. package/dist/file/appendTextFile.cjs +44 -20
  81. package/dist/file/appendTextFile.d.ts +37 -5
  82. package/dist/file/appendTextFile.mjs +34 -21
  83. package/dist/file/copy.cjs +36 -14
  84. package/dist/file/copy.d.ts +37 -5
  85. package/dist/file/copy.mjs +26 -15
  86. package/dist/file/createEntryInterface.cjs +6 -3
  87. package/dist/file/createEntryInterface.d.ts +1 -1
  88. package/dist/file/createEntryInterface.mjs +4 -2
  89. package/dist/file/ensureDirectory.cjs +37 -17
  90. package/dist/file/ensureDirectory.d.ts +30 -4
  91. package/dist/file/ensureDirectory.mjs +29 -18
  92. package/dist/file/ensureFile.cjs +41 -19
  93. package/dist/file/ensureFile.d.ts +33 -4
  94. package/dist/file/ensureFile.mjs +32 -20
  95. package/dist/file/exists.cjs +28 -14
  96. package/dist/file/exists.d.ts +21 -4
  97. package/dist/file/exists.mjs +23 -15
  98. package/dist/file/fileInterface.cjs +3 -1
  99. package/dist/file/fileInterface.d.ts +10 -9
  100. package/dist/file/fileInterface.mjs +3 -2
  101. package/dist/file/folderInterface.cjs +3 -1
  102. package/dist/file/folderInterface.d.ts +9 -8
  103. package/dist/file/folderInterface.mjs +3 -2
  104. package/dist/file/index.cjs +512 -0
  105. package/dist/file/index.d.ts +0 -1
  106. package/dist/file/index.mjs +291 -35
  107. package/dist/file/link.cjs +48 -22
  108. package/dist/file/link.d.ts +40 -5
  109. package/dist/file/link.mjs +37 -23
  110. package/dist/file/linkStat.cjs +29 -15
  111. package/dist/file/linkStat.d.ts +24 -4
  112. package/dist/file/linkStat.mjs +24 -16
  113. package/dist/file/makeDirectory.cjs +45 -21
  114. package/dist/file/makeDirectory.d.ts +35 -4
  115. package/dist/file/makeDirectory.mjs +35 -22
  116. package/dist/file/makeTemporaryDirectory.cjs +33 -15
  117. package/dist/file/makeTemporaryDirectory.d.ts +25 -2
  118. package/dist/file/makeTemporaryDirectory.mjs +26 -16
  119. package/dist/file/makeTemporaryFile.cjs +37 -20
  120. package/dist/file/makeTemporaryFile.d.ts +28 -2
  121. package/dist/file/makeTemporaryFile.mjs +30 -21
  122. package/dist/file/move.cjs +49 -23
  123. package/dist/file/move.d.ts +40 -5
  124. package/dist/file/move.mjs +38 -24
  125. package/dist/file/readDirectory.cjs +33 -9
  126. package/dist/file/readDirectory.d.ts +26 -5
  127. package/dist/file/readDirectory.mjs +25 -10
  128. package/dist/file/readFile.cjs +35 -17
  129. package/dist/file/readFile.d.ts +27 -4
  130. package/dist/file/readFile.mjs +28 -18
  131. package/dist/file/readJsonFile.cjs +35 -17
  132. package/dist/file/readJsonFile.d.ts +27 -5
  133. package/dist/file/readJsonFile.mjs +28 -18
  134. package/dist/file/readLink.cjs +31 -15
  135. package/dist/file/readLink.d.ts +24 -4
  136. package/dist/file/readLink.mjs +25 -16
  137. package/dist/file/readTextFile.cjs +35 -17
  138. package/dist/file/readTextFile.d.ts +27 -4
  139. package/dist/file/readTextFile.mjs +28 -18
  140. package/dist/file/realPath.cjs +27 -13
  141. package/dist/file/realPath.d.ts +21 -4
  142. package/dist/file/realPath.mjs +22 -14
  143. package/dist/file/relocate.cjs +52 -25
  144. package/dist/file/relocate.d.ts +40 -5
  145. package/dist/file/relocate.mjs +41 -26
  146. package/dist/file/remove.cjs +45 -23
  147. package/dist/file/remove.d.ts +32 -4
  148. package/dist/file/remove.mjs +36 -24
  149. package/dist/file/rename.cjs +52 -25
  150. package/dist/file/rename.d.ts +40 -5
  151. package/dist/file/rename.mjs +41 -26
  152. package/dist/file/setMode.cjs +29 -15
  153. package/dist/file/setMode.d.ts +24 -5
  154. package/dist/file/setMode.mjs +24 -16
  155. package/dist/file/setOwner.cjs +31 -15
  156. package/dist/file/setOwner.d.ts +25 -5
  157. package/dist/file/setOwner.mjs +25 -16
  158. package/dist/file/setTime.cjs +31 -15
  159. package/dist/file/setTime.d.ts +24 -5
  160. package/dist/file/setTime.mjs +25 -16
  161. package/dist/file/stat.cjs +29 -15
  162. package/dist/file/stat.d.ts +24 -4
  163. package/dist/file/stat.mjs +24 -16
  164. package/dist/file/symlink.cjs +42 -20
  165. package/dist/file/symlink.d.ts +34 -5
  166. package/dist/file/symlink.mjs +33 -21
  167. package/dist/file/truncate.cjs +43 -21
  168. package/dist/file/truncate.d.ts +36 -4
  169. package/dist/file/truncate.mjs +34 -22
  170. package/dist/file/unknownEntryInterface.cjs +5 -1
  171. package/dist/file/unknownEntryInterface.d.ts +8 -6
  172. package/dist/file/unknownEntryInterface.mjs +4 -2
  173. package/dist/file/walkDirectory.cjs +38 -15
  174. package/dist/file/walkDirectory.d.ts +25 -4
  175. package/dist/file/walkDirectory.mjs +32 -15
  176. package/dist/file/writeFile.cjs +45 -21
  177. package/dist/file/writeFile.d.ts +37 -5
  178. package/dist/file/writeFile.mjs +35 -22
  179. package/dist/file/writeJsonFile.cjs +48 -27
  180. package/dist/file/writeJsonFile.d.ts +37 -6
  181. package/dist/file/writeJsonFile.mjs +39 -28
  182. package/dist/file/writeTextFile.cjs +45 -21
  183. package/dist/file/writeTextFile.d.ts +37 -5
  184. package/dist/file/writeTextFile.mjs +35 -22
  185. package/dist/implementor.cjs +8 -5
  186. package/dist/implementor.d.ts +4 -4
  187. package/dist/implementor.mjs +8 -5
  188. package/dist/index.cjs +2 -0
  189. package/dist/index.mjs +2 -1
  190. package/dist/override.d.ts +8 -0
  191. package/package.json +4 -4
  192. package/dist/dataStructure/constraint/exist.d.ts +0 -10
  193. package/dist/dataStructure/helper/exist.cjs +0 -7
  194. package/dist/dataStructure/helper/exist.d.ts +0 -2
  195. package/dist/dataStructure/helper/exist.mjs +0 -7
  196. package/dist/file/types/fileSystemEither.d.ts +0 -2
  197. package/dist/file/types/index.d.ts +0 -1
  198. /package/{README → README.md} +0 -0
@@ -2,34 +2,46 @@ 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/truncate.ts
5
+ var TruncateErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-truncate-not-found", Error) {};
6
+ var TruncateErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-truncate-permission-denied", Error) {};
7
+ var TruncateErrorIsDirectory = class extends DCommon.DuploJSError.parentClass("file-system-truncate-is-directory", Error) {};
8
+ var TruncateErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-truncate-not-directory", Error) {};
9
+ var TruncateErrorNoSpace = class extends DCommon.DuploJSError.parentClass("file-system-truncate-no-space", Error) {};
10
+ var TruncateErrorReadOnly = class extends DCommon.DuploJSError.parentClass("file-system-truncate-read-only", Error) {};
11
+ var TruncateErrorInvalidArgument = class extends DCommon.DuploJSError.parentClass("file-system-truncate-invalid-argument", Error) {};
12
+ var TruncateErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-truncate-too-many-open-files", Error) {};
13
+ var TruncateErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-truncate-busy", Error) {};
14
+ var TruncateError = class extends DCommon.DuploJSError.parentClass("file-system-truncate-error", Error) {};
5
15
  function handleNodeTruncateError(error) {
6
- if (typeof error === "object" && error !== null && "code" in error) {
7
- if (error.code === "ENOENT") return DEither.left("file-system-truncate-not-found", error);
8
- else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-truncate-permission-denied", error);
9
- else if (error.code === "EISDIR") return DEither.left("file-system-truncate-is-directory", error);
10
- else if (error.code === "ENOTDIR") return DEither.left("file-system-truncate-not-directory", error);
11
- else if (error.code === "ENOSPC") return DEither.left("file-system-truncate-no-space", error);
12
- else if (error.code === "EROFS") return DEither.left("file-system-truncate-read-only", error);
13
- else if (error.code === "EINVAL") return DEither.left("file-system-truncate-invalid-argument", error);
14
- else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-truncate-too-many-open-files", error);
15
- else if (error.code === "EBUSY") return DEither.left("file-system-truncate-busy", error);
16
+ let truncateError = void 0;
17
+ if ("code" in error) {
18
+ if (error.code === "ENOENT") truncateError = new TruncateErrorNotFound(error);
19
+ else if (error.code === "EACCES" || error.code === "EPERM") truncateError = new TruncateErrorPermissionDenied(error);
20
+ else if (error.code === "EISDIR") truncateError = new TruncateErrorIsDirectory(error);
21
+ else if (error.code === "ENOTDIR") truncateError = new TruncateErrorNotDirectory(error);
22
+ else if (error.code === "ENOSPC") truncateError = new TruncateErrorNoSpace(error);
23
+ else if (error.code === "EROFS") truncateError = new TruncateErrorReadOnly(error);
24
+ else if (error.code === "EINVAL") truncateError = new TruncateErrorInvalidArgument(error);
25
+ else if (error.code === "EMFILE" || error.code === "ENFILE") truncateError = new TruncateErrorTooManyOpenFiles(error);
26
+ else if (error.code === "EBUSY") truncateError = new TruncateErrorBusy(error);
16
27
  }
17
- return DEither.left("file-system-truncate-error", error);
28
+ if (truncateError === void 0) truncateError = new TruncateError(error);
29
+ return DEither.left("file-system-truncate-error", truncateError);
18
30
  }
19
31
  function handleDenoTruncateError(error) {
20
- if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-truncate-not-found", error);
21
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-truncate-permission-denied", error);
22
- if (error instanceof Deno.errors.IsADirectory) return DEither.left("file-system-truncate-is-directory", error);
23
- if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-truncate-not-directory", error);
24
- if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-truncate-invalid-argument", error);
25
- if (error instanceof Deno.errors.Busy) return DEither.left("file-system-truncate-busy", error);
26
- return DEither.left("file-system-truncate-error", error);
32
+ let truncateError = void 0;
33
+ if (error instanceof Deno.errors.NotFound) truncateError = new TruncateErrorNotFound(error);
34
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) truncateError = new TruncateErrorPermissionDenied(error);
35
+ else if (error instanceof Deno.errors.IsADirectory) truncateError = new TruncateErrorIsDirectory(error);
36
+ else if (error instanceof Deno.errors.NotADirectory) truncateError = new TruncateErrorNotDirectory(error);
37
+ else if (error instanceof Deno.errors.InvalidData) truncateError = new TruncateErrorInvalidArgument(error);
38
+ else if (error instanceof Deno.errors.Busy) truncateError = new TruncateErrorBusy(error);
39
+ if (truncateError === void 0) truncateError = new TruncateError(error);
40
+ return DEither.left("file-system-truncate-error", truncateError);
27
41
  }
28
42
  const truncate = implementFunction("truncate", {
29
- NODE: async (path, size) => {
30
- return (await nodeFileSystem.value).truncate(path, size).then(() => DEither.right("file-system-truncate")).catch(handleNodeTruncateError);
31
- },
43
+ NODE: async (path, size) => nodeFileSystem.value.truncate(path, size).then(() => DEither.right("file-system-truncate")).catch(handleNodeTruncateError),
32
44
  DENO: (path, size) => DCommon.pipe(path, DCommon.when(DCommon.instanceOf(URL), ({ pathname }) => decodeURIComponent(pathname)), (stringPath) => Deno.truncate(stringPath, size).then(() => DEither.right("file-system-truncate")).catch(handleDenoTruncateError))
33
45
  });
34
46
  //#endregion
35
- export { truncate };
47
+ export { TruncateError, TruncateErrorBusy, TruncateErrorInvalidArgument, TruncateErrorIsDirectory, TruncateErrorNoSpace, TruncateErrorNotDirectory, TruncateErrorNotFound, TruncateErrorPermissionDenied, TruncateErrorReadOnly, TruncateErrorTooManyOpenFiles, truncate };
@@ -2,6 +2,8 @@ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
2
  const require_kind = require("../kind.cjs");
3
3
  const require_stat = require("./stat.cjs");
4
4
  const require_exists = require("./exists.cjs");
5
+ let _duplojs_lang_common = require("@duplojs/lang/common");
6
+ _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
5
7
  let _duplojs_lang_path = require("@duplojs/lang/path");
6
8
  _duplojs_lang_path = require_runtime.__toESM(_duplojs_lang_path, 1);
7
9
  //#region scripts/file/unknownEntryInterface.ts
@@ -20,7 +22,7 @@ function createUnknownEntryInterface(path) {
20
22
  return require_exists.exists(path);
21
23
  }
22
24
  return {
23
- path,
25
+ path: _duplojs_lang_common.cast(path),
24
26
  getName,
25
27
  getParentPath,
26
28
  stat: localStat,
@@ -31,6 +33,8 @@ function createUnknownEntryInterface(path) {
31
33
  function isUnknownEntryInterface(input) {
32
34
  return unknownInterfaceKind.has(input);
33
35
  }
36
+ const isUnknownEntryInterfaceFromUnknown = isUnknownEntryInterface;
34
37
  //#endregion
35
38
  exports.createUnknownEntryInterface = createUnknownEntryInterface;
36
39
  exports.isUnknownEntryInterface = isUnknownEntryInterface;
40
+ exports.isUnknownEntryInterfaceFromUnknown = isUnknownEntryInterfaceFromUnknown;
@@ -3,13 +3,15 @@ import { ExistsResult } from './exists';
3
3
  import type * as DKind from "@duplojs/lang/kind";
4
4
  import * as DPath from "@duplojs/lang/path";
5
5
  declare const unknownInterfaceKind: DKind.Handler<DKind.Definition<"@DuplojsServer/unknownInterface", unknown>>;
6
- export interface UnknownEntryInterface extends DKind.Kind<typeof unknownInterfaceKind> {
7
- path: string & DPath.Path;
8
- getName(): (string & DPath.Segment) | null;
9
- getParentPath(): (string & DPath.Path) | null;
6
+ export type EntryPath = DPath.AnyPath;
7
+ export interface UnknownEntryInterface<GenericPath extends DPath.AnyPath = DPath.AnyPath> extends DKind.Kind<typeof unknownInterfaceKind> {
8
+ path: GenericPath & DPath.Path;
9
+ getName(): (string & DPath.Segment & DPath.Path) | null;
10
+ getParentPath(): ReturnType<typeof DPath.getParentFolderPath<GenericPath>>;
10
11
  stat(): Promise<StatResult>;
11
12
  exist(): Promise<ExistsResult>;
12
13
  }
13
- export declare function createUnknownEntryInterface(path: string & DPath.Path): UnknownEntryInterface;
14
- export declare function isUnknownEntryInterface(input: unknown): input is UnknownEntryInterface;
14
+ export declare function createUnknownEntryInterface<GenericPath extends DPath.AnyPath = DPath.AnyPath>(path: GenericPath): UnknownEntryInterface<GenericPath>;
15
+ export declare function isUnknownEntryInterface<GenericInput extends unknown>(input: GenericInput): input is Extract<GenericInput, UnknownEntryInterface>;
16
+ export declare const isUnknownEntryInterfaceFromUnknown: (input: unknown) => input is UnknownEntryInterface;
15
17
  export {};
@@ -1,6 +1,7 @@
1
1
  import { createKind } from "../kind.mjs";
2
2
  import { stat } from "./stat.mjs";
3
3
  import { exists } from "./exists.mjs";
4
+ import * as DCommon from "@duplojs/lang/common";
4
5
  import * as DPath from "@duplojs/lang/path";
5
6
  //#region scripts/file/unknownEntryInterface.ts
6
7
  const unknownInterfaceKind = createKind("unknownInterface");
@@ -18,7 +19,7 @@ function createUnknownEntryInterface(path) {
18
19
  return exists(path);
19
20
  }
20
21
  return {
21
- path,
22
+ path: DCommon.cast(path),
22
23
  getName,
23
24
  getParentPath,
24
25
  stat: localStat,
@@ -29,5 +30,6 @@ function createUnknownEntryInterface(path) {
29
30
  function isUnknownEntryInterface(input) {
30
31
  return unknownInterfaceKind.has(input);
31
32
  }
33
+ const isUnknownEntryInterfaceFromUnknown = isUnknownEntryInterface;
32
34
  //#endregion
33
- export { createUnknownEntryInterface, isUnknownEntryInterface };
35
+ export { createUnknownEntryInterface, isUnknownEntryInterface, isUnknownEntryInterfaceFromUnknown };
@@ -1,34 +1,57 @@
1
1
  const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
2
  const require_implementor = require("../implementor.cjs");
3
+ const require_getCurrentWorkDirectoryOrThrow = require("../common/getCurrentWorkDirectoryOrThrow.cjs");
3
4
  const require_fileInterface = require("./fileInterface.cjs");
4
5
  const require_unknownEntryInterface = require("./unknownEntryInterface.cjs");
5
6
  const require_folderInterface = require("./folderInterface.cjs");
6
7
  let _duplojs_lang_common = require("@duplojs/lang/common");
7
8
  _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
9
+ let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
10
+ _duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
8
11
  let _duplojs_lang_either = require("@duplojs/lang/either");
9
12
  _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
10
13
  let _duplojs_lang_path = require("@duplojs/lang/path");
11
14
  _duplojs_lang_path = require_runtime.__toESM(_duplojs_lang_path, 1);
12
- let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
13
- _duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
14
15
  let _duplojs_lang_generator = require("@duplojs/lang/generator");
15
16
  _duplojs_lang_generator = require_runtime.__toESM(_duplojs_lang_generator, 1);
16
17
  //#region scripts/file/walkDirectory.ts
18
+ var WalkDirectoryErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-not-found", Error) {};
19
+ var WalkDirectoryErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-permission-denied", Error) {};
20
+ var WalkDirectoryErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-not-directory", Error) {};
21
+ var WalkDirectoryErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-too-many-open-files", Error) {};
22
+ var WalkDirectoryErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-busy", Error) {};
23
+ var WalkDirectoryError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-walk-directory-error", Error) {};
17
24
  function handleNodeWalkDirectoryError(error) {
18
- if (typeof error === "object" && error !== null && "code" in error) {
19
- if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-walk-directory-not-found", error);
20
- else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-walk-directory-permission-denied", error);
21
- else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-walk-directory-not-directory", error);
22
- else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-walk-directory-too-many-open-files", error);
23
- else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-walk-directory-busy", error);
25
+ let walkDirectoryError = void 0;
26
+ if ("code" in error) {
27
+ if (error.code === "ENOENT") walkDirectoryError = new WalkDirectoryErrorNotFound(error);
28
+ else if (error.code === "EACCES" || error.code === "EPERM") walkDirectoryError = new WalkDirectoryErrorPermissionDenied(error);
29
+ else if (error.code === "ENOTDIR") walkDirectoryError = new WalkDirectoryErrorNotDirectory(error);
30
+ else if (error.code === "EMFILE" || error.code === "ENFILE") walkDirectoryError = new WalkDirectoryErrorTooManyOpenFiles(error);
31
+ else if (error.code === "EBUSY") walkDirectoryError = new WalkDirectoryErrorBusy(error);
24
32
  }
25
- return _duplojs_lang_either.left("file-system-walk-directory-error", error);
33
+ if (walkDirectoryError === void 0) walkDirectoryError = new WalkDirectoryError(error);
34
+ return _duplojs_lang_either.left("file-system-walk-directory-error", walkDirectoryError);
26
35
  }
27
- const walkDirectory = require_implementor.implementFunction("walkDirectory", { NODE: async (path, params) => {
28
- return (await require_implementor.nodeFileSystem.value).readdir(path, {
29
- recursive: params?.recursive ?? false,
30
- withFileTypes: true
31
- }).then(_duplojs_lang_common.innerPipe(_duplojs_lang_generator.map(_duplojs_lang_common.innerPipe(_duplojs_lang_pattern.when((dirent) => dirent.isFile(), ({ parentPath, name }) => require_fileInterface.createFileInterface(_duplojs_lang_common.forwardAsserts(_duplojs_lang_path.normalize(`${parentPath}/${name}`), (result) => _duplojs_lang_common.isType(result, "string") && _duplojs_lang_path.is(result)))), _duplojs_lang_pattern.when((dirent) => dirent.isDirectory(), ({ parentPath, name }) => require_folderInterface.createFolderInterface(_duplojs_lang_common.forwardAsserts(_duplojs_lang_path.normalize(`${parentPath}/${name}`), (result) => _duplojs_lang_common.isType(result, "string") && _duplojs_lang_path.is(result)))), _duplojs_lang_pattern.otherwise(({ parentPath, name }) => require_unknownEntryInterface.createUnknownEntryInterface(_duplojs_lang_common.forwardAsserts(_duplojs_lang_path.normalize(`${parentPath}/${name}`), (result) => _duplojs_lang_common.isType(result, "string") && _duplojs_lang_path.is(result)))))), (value) => _duplojs_lang_either.right("file-system-walk-directory", value))).catch(handleNodeWalkDirectoryError);
32
- } });
36
+ const walkDirectory = require_implementor.implementFunction("walkDirectory", { NODE: async (path, params) => require_implementor.nodeFileSystem.value.readdir(path, {
37
+ recursive: params?.recursive ?? false,
38
+ withFileTypes: true
39
+ }).then((result) => {
40
+ const currentWorkDirectory = require_getCurrentWorkDirectoryOrThrow.getCurrentWorkDirectoryOrThrow();
41
+ return _duplojs_lang_common.pipe(result, _duplojs_lang_generator.map((dirent) => ({
42
+ dirent,
43
+ path: _duplojs_lang_path.resolveFrom(currentWorkDirectory, [_duplojs_lang_path.normalize(`${dirent.parentPath}/${dirent.name}`)])
44
+ })), (generator) => {
45
+ const matcher = params?.matcher;
46
+ if (!matcher) return generator;
47
+ return _duplojs_lang_generator.filter(generator, ({ path }) => matcher(path));
48
+ }, _duplojs_lang_generator.map(_duplojs_lang_common.innerPipe(_duplojs_lang_pattern.when(({ dirent }) => dirent.isFile(), ({ path }) => require_fileInterface.createFileInterface(path)), _duplojs_lang_pattern.when(({ dirent }) => dirent.isDirectory(), ({ path }) => require_folderInterface.createFolderInterface(path)), _duplojs_lang_pattern.otherwise(({ path }) => require_unknownEntryInterface.createUnknownEntryInterface(path)))), (value) => _duplojs_lang_either.right("file-system-walk-directory", value));
49
+ }).catch(handleNodeWalkDirectoryError) });
33
50
  //#endregion
51
+ exports.WalkDirectoryError = WalkDirectoryError;
52
+ exports.WalkDirectoryErrorBusy = WalkDirectoryErrorBusy;
53
+ exports.WalkDirectoryErrorNotDirectory = WalkDirectoryErrorNotDirectory;
54
+ exports.WalkDirectoryErrorNotFound = WalkDirectoryErrorNotFound;
55
+ exports.WalkDirectoryErrorPermissionDenied = WalkDirectoryErrorPermissionDenied;
56
+ exports.WalkDirectoryErrorTooManyOpenFiles = WalkDirectoryErrorTooManyOpenFiles;
34
57
  exports.walkDirectory = walkDirectory;
@@ -1,16 +1,37 @@
1
1
  import { FileInterface } from './fileInterface';
2
2
  import { FolderInterface } from './folderInterface';
3
3
  import { UnknownEntryInterface } from './unknownEntryInterface';
4
- import { FileSystemEither } from './types';
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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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<string & DPath.Absolute>;
9
29
  }
10
- export type WalkDirectoryResult = FileSystemEither<DEither.Right<"walk-directory", Generator<FileInterface | FolderInterface | UnknownEntryInterface>> | DEither.Left<"walk-directory-not-found", unknown> | DEither.Left<"walk-directory-permission-denied", unknown> | DEither.Left<"walk-directory-not-directory", unknown> | DEither.Left<"walk-directory-too-many-open-files", unknown> | DEither.Left<"walk-directory-busy", unknown> | DEither.Left<"walk-directory-error", unknown>>;
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
- walkDirectory(path: string & DPath.Path, params?: WalkDirectoryParams): Promise<WalkDirectoryResult>;
33
+ walkDirectory(path: DPath.AnyPath, params?: WalkDirectoryParams): Promise<WalkDirectoryResult>;
14
34
  }
15
35
  }
16
- export declare const walkDirectory: (path: string & DPath.Path, params?: WalkDirectoryParams) => Promise<WalkDirectoryResult>;
36
+ export declare const walkDirectory: (path: DPath.AnyPath, params?: WalkDirectoryParams) => Promise<WalkDirectoryResult>;
37
+ export {};
@@ -1,28 +1,45 @@
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
- if (typeof error === "object" && error !== null && "code" in error) {
13
- if (error.code === "ENOENT") return DEither.left("file-system-walk-directory-not-found", error);
14
- else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-walk-directory-permission-denied", error);
15
- else if (error.code === "ENOTDIR") return DEither.left("file-system-walk-directory-not-directory", error);
16
- else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-walk-directory-too-many-open-files", error);
17
- else if (error.code === "EBUSY") return DEither.left("file-system-walk-directory-busy", error);
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
- return DEither.left("file-system-walk-directory-error", error);
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
- return (await nodeFileSystem.value).readdir(path, {
23
- recursive: params?.recursive ?? false,
24
- withFileTypes: true
25
- }).then(DCommon.innerPipe(DGenerator.map(DCommon.innerPipe(DPattern.when((dirent) => dirent.isFile(), ({ parentPath, name }) => createFileInterface(DCommon.forwardAsserts(DPath.normalize(`${parentPath}/${name}`), (result) => DCommon.isType(result, "string") && DPath.is(result)))), DPattern.when((dirent) => dirent.isDirectory(), ({ parentPath, name }) => createFolderInterface(DCommon.forwardAsserts(DPath.normalize(`${parentPath}/${name}`), (result) => DCommon.isType(result, "string") && DPath.is(result)))), DPattern.otherwise(({ parentPath, name }) => createUnknownEntryInterface(DCommon.forwardAsserts(DPath.normalize(`${parentPath}/${name}`), (result) => DCommon.isType(result, "string") && DPath.is(result)))))), (value) => DEither.right("file-system-walk-directory", value))).catch(handleNodeWalkDirectoryError);
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
+ })), (generator) => {
39
+ const matcher = params?.matcher;
40
+ if (!matcher) return generator;
41
+ return DGenerator.filter(generator, ({ path }) => matcher(path));
42
+ }, 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));
43
+ }).catch(handleNodeWalkDirectoryError) });
27
44
  //#endregion
28
- export { walkDirectory };
45
+ export { WalkDirectoryError, WalkDirectoryErrorBusy, WalkDirectoryErrorNotDirectory, WalkDirectoryErrorNotFound, WalkDirectoryErrorPermissionDenied, WalkDirectoryErrorTooManyOpenFiles, walkDirectory };
@@ -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
- if (typeof error === "object" && error !== null && "code" in error) {
8
- if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-write-file-not-found", error);
9
- else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-write-file-permission-denied", error);
10
- else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-write-file-is-directory", error);
11
- else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-write-file-not-directory", error);
12
- else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-write-file-no-space", error);
13
- else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-write-file-read-only", error);
14
- else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-write-file-invalid-argument", error);
15
- else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-write-file-too-many-open-files", error);
16
- else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-write-file-busy", error);
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
- return _duplojs_lang_either.left("file-system-write-file-error", error);
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
- if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-write-file-not-found", error);
22
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-write-file-permission-denied", error);
23
- if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-write-file-is-directory", error);
24
- if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-write-file-not-directory", error);
25
- if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-write-file-invalid-argument", error);
26
- if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-write-file-busy", error);
27
- return _duplojs_lang_either.left("file-system-write-file-error", error);
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
  });
@@ -41,4 +55,14 @@ function writeFile(...args) {
41
55
  return writeFileImplementation(...args);
42
56
  }
43
57
  //#endregion
58
+ exports.WriteFileError = WriteFileError;
59
+ exports.WriteFileErrorBusy = WriteFileErrorBusy;
60
+ exports.WriteFileErrorInvalidArgument = WriteFileErrorInvalidArgument;
61
+ exports.WriteFileErrorIsDirectory = WriteFileErrorIsDirectory;
62
+ exports.WriteFileErrorNoSpace = WriteFileErrorNoSpace;
63
+ exports.WriteFileErrorNotDirectory = WriteFileErrorNotDirectory;
64
+ exports.WriteFileErrorNotFound = WriteFileErrorNotFound;
65
+ exports.WriteFileErrorPermissionDenied = WriteFileErrorPermissionDenied;
66
+ exports.WriteFileErrorReadOnly = WriteFileErrorReadOnly;
67
+ exports.WriteFileErrorTooManyOpenFiles = WriteFileErrorTooManyOpenFiles;
44
68
  exports.writeFile = writeFile;
@@ -1,11 +1,43 @@
1
- import { FileSystemEither } from './types';
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
- export type WriteFileResult = FileSystemEither<DEither.Right<"write-file", void> | DEither.Left<"write-file-not-found", unknown> | DEither.Left<"write-file-permission-denied", unknown> | DEither.Left<"write-file-is-directory", unknown> | DEither.Left<"write-file-not-directory", unknown> | DEither.Left<"write-file-no-space", unknown> | DEither.Left<"write-file-read-only", unknown> | DEither.Left<"write-file-invalid-argument", unknown> | DEither.Left<"write-file-too-many-open-files", unknown> | DEither.Left<"write-file-busy", unknown> | DEither.Left<"write-file-error", unknown>>;
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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
- writeFile(path: string & DPath.Path, data: Uint8Array): Promise<WriteFileResult>;
38
+ writeFile(path: DPath.AnyPath, data: Uint8Array): Promise<WriteFileResult>;
8
39
  }
9
40
  }
10
- export declare function writeFile(data: Uint8Array): (path: string & DPath.Path) => Promise<WriteFileResult>;
11
- export declare function writeFile(path: string & DPath.Path, data: Uint8Array): Promise<WriteFileResult>;
41
+ export declare function writeFile(data: Uint8Array): (path: DPath.AnyPath) => Promise<WriteFileResult>;
42
+ export declare function writeFile(path: DPath.AnyPath, data: Uint8Array): Promise<WriteFileResult>;
43
+ export {};
@@ -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
- if (typeof error === "object" && error !== null && "code" in error) {
6
- if (error.code === "ENOENT") return DEither.left("file-system-write-file-not-found", error);
7
- else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-write-file-permission-denied", error);
8
- else if (error.code === "EISDIR") return DEither.left("file-system-write-file-is-directory", error);
9
- else if (error.code === "ENOTDIR") return DEither.left("file-system-write-file-not-directory", error);
10
- else if (error.code === "ENOSPC") return DEither.left("file-system-write-file-no-space", error);
11
- else if (error.code === "EROFS") return DEither.left("file-system-write-file-read-only", error);
12
- else if (error.code === "EINVAL") return DEither.left("file-system-write-file-invalid-argument", error);
13
- else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-write-file-too-many-open-files", error);
14
- else if (error.code === "EBUSY") return DEither.left("file-system-write-file-busy", error);
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
- return DEither.left("file-system-write-file-error", error);
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
- if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-write-file-not-found", error);
20
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-write-file-permission-denied", error);
21
- if (error instanceof Deno.errors.IsADirectory) return DEither.left("file-system-write-file-is-directory", error);
22
- if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-write-file-not-directory", error);
23
- if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-write-file-invalid-argument", error);
24
- if (error instanceof Deno.errors.Busy) return DEither.left("file-system-write-file-busy", error);
25
- return DEither.left("file-system-write-file-error", error);
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
  });
@@ -39,4 +52,4 @@ function writeFile(...args) {
39
52
  return writeFileImplementation(...args);
40
53
  }
41
54
  //#endregion
42
- export { writeFile };
55
+ export { WriteFileError, WriteFileErrorBusy, WriteFileErrorInvalidArgument, WriteFileErrorIsDirectory, WriteFileErrorNoSpace, WriteFileErrorNotDirectory, WriteFileErrorNotFound, WriteFileErrorPermissionDenied, WriteFileErrorReadOnly, WriteFileErrorTooManyOpenFiles, writeFile };