@duplojs/server 0.1.0-beta.1 → 0.1.0-beta.10

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 +96 -43
  7. package/dist/command/error.d.ts +9 -1
  8. package/dist/command/error.mjs +95 -42
  9. package/dist/command/exec.d.ts +4 -3
  10. package/dist/command/help.cjs +28 -35
  11. package/dist/command/help.d.ts +1 -1
  12. package/dist/command/help.mjs +27 -34
  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
@@ -7,22 +7,32 @@ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
7
7
  let _duplojs_lang_chrono = require("@duplojs/lang/chrono");
8
8
  _duplojs_lang_chrono = require_runtime.__toESM(_duplojs_lang_chrono, 1);
9
9
  //#region scripts/file/stat.ts
10
+ var StatErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-not-found", Error) {};
11
+ var StatErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-permission-denied", Error) {};
12
+ var StatErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-not-directory", Error) {};
13
+ var StatErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-too-many-open-files", Error) {};
14
+ var StatErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-busy", Error) {};
15
+ var StatError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-stat-error", Error) {};
10
16
  function handleNodeStatError(error) {
11
- if (typeof error === "object" && error !== null && "code" in error) {
12
- if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-stat-not-found", error);
13
- else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-stat-permission-denied", error);
14
- else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-stat-not-directory", error);
15
- else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-stat-too-many-open-files", error);
16
- else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-stat-busy", error);
17
+ let statError = void 0;
18
+ if ("code" in error) {
19
+ if (error.code === "ENOENT") statError = new StatErrorNotFound(error);
20
+ else if (error.code === "EACCES" || error.code === "EPERM") statError = new StatErrorPermissionDenied(error);
21
+ else if (error.code === "ENOTDIR") statError = new StatErrorNotDirectory(error);
22
+ else if (error.code === "EMFILE" || error.code === "ENFILE") statError = new StatErrorTooManyOpenFiles(error);
23
+ else if (error.code === "EBUSY") statError = new StatErrorBusy(error);
17
24
  }
18
- return _duplojs_lang_either.left("file-system-stat-error", error);
25
+ if (statError === void 0) statError = new StatError(error);
26
+ return _duplojs_lang_either.left("file-system-stat-error", statError);
19
27
  }
20
28
  function handleDenoStatError(error) {
21
- if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-stat-not-found", error);
22
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-stat-permission-denied", error);
23
- if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-stat-not-directory", error);
24
- if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-stat-busy", error);
25
- return _duplojs_lang_either.left("file-system-stat-error", error);
29
+ let statError = void 0;
30
+ if (error instanceof Deno.errors.NotFound) statError = new StatErrorNotFound(error);
31
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) statError = new StatErrorPermissionDenied(error);
32
+ else if (error instanceof Deno.errors.NotADirectory) statError = new StatErrorNotDirectory(error);
33
+ else if (error instanceof Deno.errors.Busy) statError = new StatErrorBusy(error);
34
+ if (statError === void 0) statError = new StatError(error);
35
+ return _duplojs_lang_either.left("file-system-stat-error", statError);
26
36
  }
27
37
  function createStatInfoWithFsSource(source) {
28
38
  return {
@@ -75,11 +85,15 @@ function createStatInfoWithDeno(source) {
75
85
  };
76
86
  }
77
87
  const stat = require_implementor.implementFunction("stat", {
78
- NODE: async (path) => {
79
- return (await require_implementor.nodeFileSystem.value).stat(path).then(_duplojs_lang_common.innerPipe(createStatInfoWithFsSource, (value) => _duplojs_lang_either.right("file-system-stat", value))).catch(handleNodeStatError);
80
- },
88
+ NODE: async (path) => require_implementor.nodeFileSystem.value.stat(path).then(_duplojs_lang_common.innerPipe(createStatInfoWithFsSource, (value) => _duplojs_lang_either.right("file-system-stat", value))).catch(handleNodeStatError),
81
89
  DENO: (path) => Deno.stat(path).then(_duplojs_lang_common.innerPipe(createStatInfoWithDeno, (value) => _duplojs_lang_either.right("file-system-stat", value))).catch(handleDenoStatError),
82
90
  BUN: (path) => Bun.file(path).stat().then(_duplojs_lang_common.innerPipe(createStatInfoWithFsSource, (value) => _duplojs_lang_either.right("file-system-stat", value))).catch(handleNodeStatError)
83
91
  });
84
92
  //#endregion
93
+ exports.StatError = StatError;
94
+ exports.StatErrorBusy = StatErrorBusy;
95
+ exports.StatErrorNotDirectory = StatErrorNotDirectory;
96
+ exports.StatErrorNotFound = StatErrorNotFound;
97
+ exports.StatErrorPermissionDenied = StatErrorPermissionDenied;
98
+ exports.StatErrorTooManyOpenFiles = StatErrorTooManyOpenFiles;
85
99
  exports.stat = stat;
@@ -1,4 +1,4 @@
1
- import { FileSystemEither } from './types';
1
+ import * as DCommon from "@duplojs/lang/common";
2
2
  import type * as DPath from "@duplojs/lang/path";
3
3
  import * as DEither from "@duplojs/lang/either";
4
4
  import * as DChrono from "@duplojs/lang/chrono";
@@ -33,10 +33,30 @@ export interface StatInfo {
33
33
  isFifo: boolean | null;
34
34
  isSocket: boolean | null;
35
35
  }
36
- export type StatResult = FileSystemEither<DEither.Right<"stat", StatInfo> | DEither.Left<"stat-not-found", unknown> | DEither.Left<"stat-permission-denied", unknown> | DEither.Left<"stat-not-directory", unknown> | DEither.Left<"stat-too-many-open-files", unknown> | DEither.Left<"stat-busy", unknown> | DEither.Left<"stat-error", unknown>>;
36
+ declare const StatErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-stat-not-found", unknown>>, unknown>;
37
+ export declare class StatErrorNotFound extends StatErrorNotFound_base {
38
+ }
39
+ declare const StatErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-stat-permission-denied", unknown>>, unknown>;
40
+ export declare class StatErrorPermissionDenied extends StatErrorPermissionDenied_base {
41
+ }
42
+ declare const StatErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-stat-not-directory", unknown>>, unknown>;
43
+ export declare class StatErrorNotDirectory extends StatErrorNotDirectory_base {
44
+ }
45
+ declare const StatErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-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-stat-too-many-open-files", unknown>>, unknown>;
46
+ export declare class StatErrorTooManyOpenFiles extends StatErrorTooManyOpenFiles_base {
47
+ }
48
+ declare const StatErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-stat-busy", unknown>>, unknown>;
49
+ export declare class StatErrorBusy extends StatErrorBusy_base {
50
+ }
51
+ declare const StatError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-stat-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-stat-error", unknown>>, unknown>;
52
+ export declare class StatError extends StatError_base {
53
+ }
54
+ export type StatErrors = (StatErrorNotFound | StatErrorPermissionDenied | StatErrorNotDirectory | StatErrorTooManyOpenFiles | StatErrorBusy | StatError);
55
+ export type StatResult = (DEither.Right<"file-system-stat", StatInfo> | DEither.Left<"file-system-stat-error", StatErrors>);
37
56
  declare module '../implementor' {
38
57
  interface ServerFunction {
39
- stat(path: string & DPath.Path): Promise<StatResult>;
58
+ stat(path: DPath.AnyPath): Promise<StatResult>;
40
59
  }
41
60
  }
42
- export declare const stat: (path: string & DPath.Path) => Promise<StatResult>;
61
+ export declare const stat: (path: DPath.AnyPath) => Promise<StatResult>;
62
+ export {};
@@ -3,22 +3,32 @@ import * as DCommon from "@duplojs/lang/common";
3
3
  import * as DEither from "@duplojs/lang/either";
4
4
  import * as DChrono from "@duplojs/lang/chrono";
5
5
  //#region scripts/file/stat.ts
6
+ var StatErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-stat-not-found", Error) {};
7
+ var StatErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-stat-permission-denied", Error) {};
8
+ var StatErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-stat-not-directory", Error) {};
9
+ var StatErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-stat-too-many-open-files", Error) {};
10
+ var StatErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-stat-busy", Error) {};
11
+ var StatError = class extends DCommon.DuploJSError.parentClass("file-system-stat-error", Error) {};
6
12
  function handleNodeStatError(error) {
7
- if (typeof error === "object" && error !== null && "code" in error) {
8
- if (error.code === "ENOENT") return DEither.left("file-system-stat-not-found", error);
9
- else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-stat-permission-denied", error);
10
- else if (error.code === "ENOTDIR") return DEither.left("file-system-stat-not-directory", error);
11
- else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-stat-too-many-open-files", error);
12
- else if (error.code === "EBUSY") return DEither.left("file-system-stat-busy", error);
13
+ let statError = void 0;
14
+ if ("code" in error) {
15
+ if (error.code === "ENOENT") statError = new StatErrorNotFound(error);
16
+ else if (error.code === "EACCES" || error.code === "EPERM") statError = new StatErrorPermissionDenied(error);
17
+ else if (error.code === "ENOTDIR") statError = new StatErrorNotDirectory(error);
18
+ else if (error.code === "EMFILE" || error.code === "ENFILE") statError = new StatErrorTooManyOpenFiles(error);
19
+ else if (error.code === "EBUSY") statError = new StatErrorBusy(error);
13
20
  }
14
- return DEither.left("file-system-stat-error", error);
21
+ if (statError === void 0) statError = new StatError(error);
22
+ return DEither.left("file-system-stat-error", statError);
15
23
  }
16
24
  function handleDenoStatError(error) {
17
- if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-stat-not-found", error);
18
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-stat-permission-denied", error);
19
- if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-stat-not-directory", error);
20
- if (error instanceof Deno.errors.Busy) return DEither.left("file-system-stat-busy", error);
21
- return DEither.left("file-system-stat-error", error);
25
+ let statError = void 0;
26
+ if (error instanceof Deno.errors.NotFound) statError = new StatErrorNotFound(error);
27
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) statError = new StatErrorPermissionDenied(error);
28
+ else if (error instanceof Deno.errors.NotADirectory) statError = new StatErrorNotDirectory(error);
29
+ else if (error instanceof Deno.errors.Busy) statError = new StatErrorBusy(error);
30
+ if (statError === void 0) statError = new StatError(error);
31
+ return DEither.left("file-system-stat-error", statError);
22
32
  }
23
33
  function createStatInfoWithFsSource(source) {
24
34
  return {
@@ -71,11 +81,9 @@ function createStatInfoWithDeno(source) {
71
81
  };
72
82
  }
73
83
  const stat = implementFunction("stat", {
74
- NODE: async (path) => {
75
- return (await nodeFileSystem.value).stat(path).then(DCommon.innerPipe(createStatInfoWithFsSource, (value) => DEither.right("file-system-stat", value))).catch(handleNodeStatError);
76
- },
84
+ NODE: async (path) => nodeFileSystem.value.stat(path).then(DCommon.innerPipe(createStatInfoWithFsSource, (value) => DEither.right("file-system-stat", value))).catch(handleNodeStatError),
77
85
  DENO: (path) => Deno.stat(path).then(DCommon.innerPipe(createStatInfoWithDeno, (value) => DEither.right("file-system-stat", value))).catch(handleDenoStatError),
78
86
  BUN: (path) => Bun.file(path).stat().then(DCommon.innerPipe(createStatInfoWithFsSource, (value) => DEither.right("file-system-stat", value))).catch(handleNodeStatError)
79
87
  });
80
88
  //#endregion
81
- export { stat };
89
+ export { StatError, StatErrorBusy, StatErrorNotDirectory, StatErrorNotFound, StatErrorPermissionDenied, StatErrorTooManyOpenFiles, stat };
@@ -1,34 +1,47 @@
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/symlink.ts
8
+ var SymlinkErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-not-found", Error) {};
9
+ var SymlinkErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-permission-denied", Error) {};
10
+ var SymlinkErrorAlreadyExists = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-already-exists", Error) {};
11
+ var SymlinkErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-not-directory", Error) {};
12
+ var SymlinkErrorReadOnly = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-read-only", Error) {};
13
+ var SymlinkErrorInvalidArgument = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-invalid-argument", Error) {};
14
+ var SymlinkErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-too-many-open-files", Error) {};
15
+ var SymlinkErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-busy", Error) {};
16
+ var SymlinkError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-symlink-error", Error) {};
6
17
  function handleNodeSymlinkError(error) {
7
- if (typeof error === "object" && error !== null && "code" in error) {
8
- if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-symlink-not-found", error);
9
- else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-symlink-permission-denied", error);
10
- else if (error.code === "EEXIST") return _duplojs_lang_either.left("file-system-symlink-already-exists", error);
11
- else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-symlink-not-directory", error);
12
- else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-symlink-read-only", error);
13
- else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-symlink-invalid-argument", error);
14
- else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-symlink-too-many-open-files", error);
15
- else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-symlink-busy", error);
18
+ let symlinkError = void 0;
19
+ if ("code" in error) {
20
+ if (error.code === "ENOENT") symlinkError = new SymlinkErrorNotFound(error);
21
+ else if (error.code === "EACCES" || error.code === "EPERM") symlinkError = new SymlinkErrorPermissionDenied(error);
22
+ else if (error.code === "EEXIST") symlinkError = new SymlinkErrorAlreadyExists(error);
23
+ else if (error.code === "ENOTDIR") symlinkError = new SymlinkErrorNotDirectory(error);
24
+ else if (error.code === "EROFS") symlinkError = new SymlinkErrorReadOnly(error);
25
+ else if (error.code === "EINVAL") symlinkError = new SymlinkErrorInvalidArgument(error);
26
+ else if (error.code === "EMFILE" || error.code === "ENFILE") symlinkError = new SymlinkErrorTooManyOpenFiles(error);
27
+ else if (error.code === "EBUSY") symlinkError = new SymlinkErrorBusy(error);
16
28
  }
17
- return _duplojs_lang_either.left("file-system-symlink-error", error);
29
+ if (symlinkError === void 0) symlinkError = new SymlinkError(error);
30
+ return _duplojs_lang_either.left("file-system-symlink-error", symlinkError);
18
31
  }
19
32
  function handleDenoSymlinkError(error) {
20
- if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-symlink-not-found", error);
21
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-symlink-permission-denied", error);
22
- if (error instanceof Deno.errors.AlreadyExists) return _duplojs_lang_either.left("file-system-symlink-already-exists", error);
23
- if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-symlink-not-directory", error);
24
- if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-symlink-invalid-argument", error);
25
- if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-symlink-busy", error);
26
- return _duplojs_lang_either.left("file-system-symlink-error", error);
33
+ let symlinkError = void 0;
34
+ if (error instanceof Deno.errors.NotFound) symlinkError = new SymlinkErrorNotFound(error);
35
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) symlinkError = new SymlinkErrorPermissionDenied(error);
36
+ else if (error instanceof Deno.errors.AlreadyExists) symlinkError = new SymlinkErrorAlreadyExists(error);
37
+ else if (error instanceof Deno.errors.NotADirectory) symlinkError = new SymlinkErrorNotDirectory(error);
38
+ else if (error instanceof Deno.errors.InvalidData) symlinkError = new SymlinkErrorInvalidArgument(error);
39
+ else if (error instanceof Deno.errors.Busy) symlinkError = new SymlinkErrorBusy(error);
40
+ if (symlinkError === void 0) symlinkError = new SymlinkError(error);
41
+ return _duplojs_lang_either.left("file-system-symlink-error", symlinkError);
27
42
  }
28
43
  const symlinkImplementation = require_implementor.implementFunction("symlink", {
29
- NODE: async (oldPath, newPath, params) => {
30
- return (await require_implementor.nodeFileSystem.value).symlink(oldPath, newPath, params?.type).then(() => _duplojs_lang_either.right("file-system-symlink")).catch(handleNodeSymlinkError);
31
- },
44
+ NODE: async (oldPath, newPath, params) => require_implementor.nodeFileSystem.value.symlink(oldPath, newPath, params?.type).then(() => _duplojs_lang_either.right("file-system-symlink")).catch(handleNodeSymlinkError),
32
45
  DENO: (oldPath, newPath, params) => Deno.symlink(oldPath, newPath, params).then(() => _duplojs_lang_either.right("file-system-symlink")).catch(handleDenoSymlinkError)
33
46
  });
34
47
  function symlink(...args) {
@@ -39,4 +52,13 @@ function symlink(...args) {
39
52
  return symlinkImplementation(...args);
40
53
  }
41
54
  //#endregion
55
+ exports.SymlinkError = SymlinkError;
56
+ exports.SymlinkErrorAlreadyExists = SymlinkErrorAlreadyExists;
57
+ exports.SymlinkErrorBusy = SymlinkErrorBusy;
58
+ exports.SymlinkErrorInvalidArgument = SymlinkErrorInvalidArgument;
59
+ exports.SymlinkErrorNotDirectory = SymlinkErrorNotDirectory;
60
+ exports.SymlinkErrorNotFound = SymlinkErrorNotFound;
61
+ exports.SymlinkErrorPermissionDenied = SymlinkErrorPermissionDenied;
62
+ exports.SymlinkErrorReadOnly = SymlinkErrorReadOnly;
63
+ exports.SymlinkErrorTooManyOpenFiles = SymlinkErrorTooManyOpenFiles;
42
64
  exports.symlink = symlink;
@@ -1,4 +1,4 @@
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
4
  export interface SymlinkParams {
@@ -9,11 +9,40 @@ export interface SymlinkParams {
9
9
  */
10
10
  type: "file" | "dir" | "junction";
11
11
  }
12
- export type SymlinkResult = FileSystemEither<DEither.Right<"symlink", void> | DEither.Left<"symlink-not-found", unknown> | DEither.Left<"symlink-permission-denied", unknown> | DEither.Left<"symlink-already-exists", unknown> | DEither.Left<"symlink-not-directory", unknown> | DEither.Left<"symlink-read-only", unknown> | DEither.Left<"symlink-invalid-argument", unknown> | DEither.Left<"symlink-too-many-open-files", unknown> | DEither.Left<"symlink-busy", unknown> | DEither.Left<"symlink-error", unknown>>;
12
+ declare const SymlinkErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-not-found", unknown>>, unknown>;
13
+ export declare class SymlinkErrorNotFound extends SymlinkErrorNotFound_base {
14
+ }
15
+ declare const SymlinkErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-permission-denied", unknown>>, unknown>;
16
+ export declare class SymlinkErrorPermissionDenied extends SymlinkErrorPermissionDenied_base {
17
+ }
18
+ declare const SymlinkErrorAlreadyExists_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-already-exists", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-already-exists", unknown>>, unknown>;
19
+ export declare class SymlinkErrorAlreadyExists extends SymlinkErrorAlreadyExists_base {
20
+ }
21
+ declare const SymlinkErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-not-directory", unknown>>, unknown>;
22
+ export declare class SymlinkErrorNotDirectory extends SymlinkErrorNotDirectory_base {
23
+ }
24
+ declare const SymlinkErrorReadOnly_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-read-only", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-read-only", unknown>>, unknown>;
25
+ export declare class SymlinkErrorReadOnly extends SymlinkErrorReadOnly_base {
26
+ }
27
+ declare const SymlinkErrorInvalidArgument_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-invalid-argument", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-invalid-argument", unknown>>, unknown>;
28
+ export declare class SymlinkErrorInvalidArgument extends SymlinkErrorInvalidArgument_base {
29
+ }
30
+ declare const SymlinkErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-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-symlink-too-many-open-files", unknown>>, unknown>;
31
+ export declare class SymlinkErrorTooManyOpenFiles extends SymlinkErrorTooManyOpenFiles_base {
32
+ }
33
+ declare const SymlinkErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-busy", unknown>>, unknown>;
34
+ export declare class SymlinkErrorBusy extends SymlinkErrorBusy_base {
35
+ }
36
+ declare const SymlinkError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-symlink-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-symlink-error", unknown>>, unknown>;
37
+ export declare class SymlinkError extends SymlinkError_base {
38
+ }
39
+ export type SymlinkErrors = (SymlinkErrorNotFound | SymlinkErrorPermissionDenied | SymlinkErrorAlreadyExists | SymlinkErrorNotDirectory | SymlinkErrorReadOnly | SymlinkErrorInvalidArgument | SymlinkErrorTooManyOpenFiles | SymlinkErrorBusy | SymlinkError);
40
+ export type SymlinkResult = (DEither.Right<"file-system-symlink", void> | DEither.Left<"file-system-symlink-error", SymlinkErrors>);
13
41
  declare module '../implementor' {
14
42
  interface ServerFunction {
15
- symlink(oldPath: string & DPath.Path, newPath: string & DPath.Path, params?: SymlinkParams): Promise<SymlinkResult>;
43
+ symlink(oldPath: DPath.AnyPath, newPath: DPath.AnyPath, params?: SymlinkParams): Promise<SymlinkResult>;
16
44
  }
17
45
  }
18
- export declare function symlink(newPath: string & DPath.Path): (oldPath: string & DPath.Path) => Promise<SymlinkResult>;
19
- export declare function symlink(oldPath: string & DPath.Path, newPath: string & DPath.Path, params?: SymlinkParams): Promise<SymlinkResult>;
46
+ export declare function symlink(newPath: DPath.AnyPath): (oldPath: DPath.AnyPath) => Promise<SymlinkResult>;
47
+ export declare function symlink(oldPath: DPath.AnyPath, newPath: DPath.AnyPath, params?: SymlinkParams): Promise<SymlinkResult>;
48
+ export {};
@@ -1,32 +1,44 @@
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/symlink.ts
5
+ var SymlinkErrorNotFound = class extends DCommon.DuploJSError.parentClass("file-system-symlink-not-found", Error) {};
6
+ var SymlinkErrorPermissionDenied = class extends DCommon.DuploJSError.parentClass("file-system-symlink-permission-denied", Error) {};
7
+ var SymlinkErrorAlreadyExists = class extends DCommon.DuploJSError.parentClass("file-system-symlink-already-exists", Error) {};
8
+ var SymlinkErrorNotDirectory = class extends DCommon.DuploJSError.parentClass("file-system-symlink-not-directory", Error) {};
9
+ var SymlinkErrorReadOnly = class extends DCommon.DuploJSError.parentClass("file-system-symlink-read-only", Error) {};
10
+ var SymlinkErrorInvalidArgument = class extends DCommon.DuploJSError.parentClass("file-system-symlink-invalid-argument", Error) {};
11
+ var SymlinkErrorTooManyOpenFiles = class extends DCommon.DuploJSError.parentClass("file-system-symlink-too-many-open-files", Error) {};
12
+ var SymlinkErrorBusy = class extends DCommon.DuploJSError.parentClass("file-system-symlink-busy", Error) {};
13
+ var SymlinkError = class extends DCommon.DuploJSError.parentClass("file-system-symlink-error", Error) {};
4
14
  function handleNodeSymlinkError(error) {
5
- if (typeof error === "object" && error !== null && "code" in error) {
6
- if (error.code === "ENOENT") return DEither.left("file-system-symlink-not-found", error);
7
- else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-symlink-permission-denied", error);
8
- else if (error.code === "EEXIST") return DEither.left("file-system-symlink-already-exists", error);
9
- else if (error.code === "ENOTDIR") return DEither.left("file-system-symlink-not-directory", error);
10
- else if (error.code === "EROFS") return DEither.left("file-system-symlink-read-only", error);
11
- else if (error.code === "EINVAL") return DEither.left("file-system-symlink-invalid-argument", error);
12
- else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-symlink-too-many-open-files", error);
13
- else if (error.code === "EBUSY") return DEither.left("file-system-symlink-busy", error);
15
+ let symlinkError = void 0;
16
+ if ("code" in error) {
17
+ if (error.code === "ENOENT") symlinkError = new SymlinkErrorNotFound(error);
18
+ else if (error.code === "EACCES" || error.code === "EPERM") symlinkError = new SymlinkErrorPermissionDenied(error);
19
+ else if (error.code === "EEXIST") symlinkError = new SymlinkErrorAlreadyExists(error);
20
+ else if (error.code === "ENOTDIR") symlinkError = new SymlinkErrorNotDirectory(error);
21
+ else if (error.code === "EROFS") symlinkError = new SymlinkErrorReadOnly(error);
22
+ else if (error.code === "EINVAL") symlinkError = new SymlinkErrorInvalidArgument(error);
23
+ else if (error.code === "EMFILE" || error.code === "ENFILE") symlinkError = new SymlinkErrorTooManyOpenFiles(error);
24
+ else if (error.code === "EBUSY") symlinkError = new SymlinkErrorBusy(error);
14
25
  }
15
- return DEither.left("file-system-symlink-error", error);
26
+ if (symlinkError === void 0) symlinkError = new SymlinkError(error);
27
+ return DEither.left("file-system-symlink-error", symlinkError);
16
28
  }
17
29
  function handleDenoSymlinkError(error) {
18
- if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-symlink-not-found", error);
19
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-symlink-permission-denied", error);
20
- if (error instanceof Deno.errors.AlreadyExists) return DEither.left("file-system-symlink-already-exists", error);
21
- if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-symlink-not-directory", error);
22
- if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-symlink-invalid-argument", error);
23
- if (error instanceof Deno.errors.Busy) return DEither.left("file-system-symlink-busy", error);
24
- return DEither.left("file-system-symlink-error", error);
30
+ let symlinkError = void 0;
31
+ if (error instanceof Deno.errors.NotFound) symlinkError = new SymlinkErrorNotFound(error);
32
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) symlinkError = new SymlinkErrorPermissionDenied(error);
33
+ else if (error instanceof Deno.errors.AlreadyExists) symlinkError = new SymlinkErrorAlreadyExists(error);
34
+ else if (error instanceof Deno.errors.NotADirectory) symlinkError = new SymlinkErrorNotDirectory(error);
35
+ else if (error instanceof Deno.errors.InvalidData) symlinkError = new SymlinkErrorInvalidArgument(error);
36
+ else if (error instanceof Deno.errors.Busy) symlinkError = new SymlinkErrorBusy(error);
37
+ if (symlinkError === void 0) symlinkError = new SymlinkError(error);
38
+ return DEither.left("file-system-symlink-error", symlinkError);
25
39
  }
26
40
  const symlinkImplementation = implementFunction("symlink", {
27
- NODE: async (oldPath, newPath, params) => {
28
- return (await nodeFileSystem.value).symlink(oldPath, newPath, params?.type).then(() => DEither.right("file-system-symlink")).catch(handleNodeSymlinkError);
29
- },
41
+ NODE: async (oldPath, newPath, params) => nodeFileSystem.value.symlink(oldPath, newPath, params?.type).then(() => DEither.right("file-system-symlink")).catch(handleNodeSymlinkError),
30
42
  DENO: (oldPath, newPath, params) => Deno.symlink(oldPath, newPath, params).then(() => DEither.right("file-system-symlink")).catch(handleDenoSymlinkError)
31
43
  });
32
44
  function symlink(...args) {
@@ -37,4 +49,4 @@ function symlink(...args) {
37
49
  return symlinkImplementation(...args);
38
50
  }
39
51
  //#endregion
40
- export { symlink };
52
+ export { SymlinkError, SymlinkErrorAlreadyExists, SymlinkErrorBusy, SymlinkErrorInvalidArgument, SymlinkErrorNotDirectory, SymlinkErrorNotFound, SymlinkErrorPermissionDenied, SymlinkErrorReadOnly, SymlinkErrorTooManyOpenFiles, symlink };
@@ -5,34 +5,56 @@ _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/truncate.ts
8
+ var TruncateErrorNotFound = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-not-found", Error) {};
9
+ var TruncateErrorPermissionDenied = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-permission-denied", Error) {};
10
+ var TruncateErrorIsDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-is-directory", Error) {};
11
+ var TruncateErrorNotDirectory = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-not-directory", Error) {};
12
+ var TruncateErrorNoSpace = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-no-space", Error) {};
13
+ var TruncateErrorReadOnly = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-read-only", Error) {};
14
+ var TruncateErrorInvalidArgument = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-invalid-argument", Error) {};
15
+ var TruncateErrorTooManyOpenFiles = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-too-many-open-files", Error) {};
16
+ var TruncateErrorBusy = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-busy", Error) {};
17
+ var TruncateError = class extends _duplojs_lang_common.DuploJSError.parentClass("file-system-truncate-error", Error) {};
8
18
  function handleNodeTruncateError(error) {
9
- if (typeof error === "object" && error !== null && "code" in error) {
10
- if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-truncate-not-found", error);
11
- else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-truncate-permission-denied", error);
12
- else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-truncate-is-directory", error);
13
- else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-truncate-not-directory", error);
14
- else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-truncate-no-space", error);
15
- else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-truncate-read-only", error);
16
- else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-truncate-invalid-argument", error);
17
- else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-truncate-too-many-open-files", error);
18
- else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-truncate-busy", error);
19
+ let truncateError = void 0;
20
+ if ("code" in error) {
21
+ if (error.code === "ENOENT") truncateError = new TruncateErrorNotFound(error);
22
+ else if (error.code === "EACCES" || error.code === "EPERM") truncateError = new TruncateErrorPermissionDenied(error);
23
+ else if (error.code === "EISDIR") truncateError = new TruncateErrorIsDirectory(error);
24
+ else if (error.code === "ENOTDIR") truncateError = new TruncateErrorNotDirectory(error);
25
+ else if (error.code === "ENOSPC") truncateError = new TruncateErrorNoSpace(error);
26
+ else if (error.code === "EROFS") truncateError = new TruncateErrorReadOnly(error);
27
+ else if (error.code === "EINVAL") truncateError = new TruncateErrorInvalidArgument(error);
28
+ else if (error.code === "EMFILE" || error.code === "ENFILE") truncateError = new TruncateErrorTooManyOpenFiles(error);
29
+ else if (error.code === "EBUSY") truncateError = new TruncateErrorBusy(error);
19
30
  }
20
- return _duplojs_lang_either.left("file-system-truncate-error", error);
31
+ if (truncateError === void 0) truncateError = new TruncateError(error);
32
+ return _duplojs_lang_either.left("file-system-truncate-error", truncateError);
21
33
  }
22
34
  function handleDenoTruncateError(error) {
23
- if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-truncate-not-found", error);
24
- if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-truncate-permission-denied", error);
25
- if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-truncate-is-directory", error);
26
- if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-truncate-not-directory", error);
27
- if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-truncate-invalid-argument", error);
28
- if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-truncate-busy", error);
29
- return _duplojs_lang_either.left("file-system-truncate-error", error);
35
+ let truncateError = void 0;
36
+ if (error instanceof Deno.errors.NotFound) truncateError = new TruncateErrorNotFound(error);
37
+ else if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) truncateError = new TruncateErrorPermissionDenied(error);
38
+ else if (error instanceof Deno.errors.IsADirectory) truncateError = new TruncateErrorIsDirectory(error);
39
+ else if (error instanceof Deno.errors.NotADirectory) truncateError = new TruncateErrorNotDirectory(error);
40
+ else if (error instanceof Deno.errors.InvalidData) truncateError = new TruncateErrorInvalidArgument(error);
41
+ else if (error instanceof Deno.errors.Busy) truncateError = new TruncateErrorBusy(error);
42
+ if (truncateError === void 0) truncateError = new TruncateError(error);
43
+ return _duplojs_lang_either.left("file-system-truncate-error", truncateError);
30
44
  }
31
45
  const truncate = require_implementor.implementFunction("truncate", {
32
- NODE: async (path, size) => {
33
- return (await require_implementor.nodeFileSystem.value).truncate(path, size).then(() => _duplojs_lang_either.right("file-system-truncate")).catch(handleNodeTruncateError);
34
- },
46
+ NODE: async (path, size) => require_implementor.nodeFileSystem.value.truncate(path, size).then(() => _duplojs_lang_either.right("file-system-truncate")).catch(handleNodeTruncateError),
35
47
  DENO: (path, size) => _duplojs_lang_common.pipe(path, _duplojs_lang_common.when(_duplojs_lang_common.instanceOf(URL), ({ pathname }) => decodeURIComponent(pathname)), (stringPath) => Deno.truncate(stringPath, size).then(() => _duplojs_lang_either.right("file-system-truncate")).catch(handleDenoTruncateError))
36
48
  });
37
49
  //#endregion
50
+ exports.TruncateError = TruncateError;
51
+ exports.TruncateErrorBusy = TruncateErrorBusy;
52
+ exports.TruncateErrorInvalidArgument = TruncateErrorInvalidArgument;
53
+ exports.TruncateErrorIsDirectory = TruncateErrorIsDirectory;
54
+ exports.TruncateErrorNoSpace = TruncateErrorNoSpace;
55
+ exports.TruncateErrorNotDirectory = TruncateErrorNotDirectory;
56
+ exports.TruncateErrorNotFound = TruncateErrorNotFound;
57
+ exports.TruncateErrorPermissionDenied = TruncateErrorPermissionDenied;
58
+ exports.TruncateErrorReadOnly = TruncateErrorReadOnly;
59
+ exports.TruncateErrorTooManyOpenFiles = TruncateErrorTooManyOpenFiles;
38
60
  exports.truncate = truncate;
@@ -1,10 +1,42 @@
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 TruncateResult = FileSystemEither<DEither.Right<"truncate", void> | DEither.Left<"truncate-not-found", unknown> | DEither.Left<"truncate-permission-denied", unknown> | DEither.Left<"truncate-is-directory", unknown> | DEither.Left<"truncate-not-directory", unknown> | DEither.Left<"truncate-no-space", unknown> | DEither.Left<"truncate-read-only", unknown> | DEither.Left<"truncate-invalid-argument", unknown> | DEither.Left<"truncate-too-many-open-files", unknown> | DEither.Left<"truncate-busy", unknown> | DEither.Left<"truncate-error", unknown>>;
4
+ declare const TruncateErrorNotFound_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-not-found", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-not-found", unknown>>, unknown>;
5
+ export declare class TruncateErrorNotFound extends TruncateErrorNotFound_base {
6
+ }
7
+ declare const TruncateErrorPermissionDenied_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-permission-denied", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-permission-denied", unknown>>, unknown>;
8
+ export declare class TruncateErrorPermissionDenied extends TruncateErrorPermissionDenied_base {
9
+ }
10
+ declare const TruncateErrorIsDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-is-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-is-directory", unknown>>, unknown>;
11
+ export declare class TruncateErrorIsDirectory extends TruncateErrorIsDirectory_base {
12
+ }
13
+ declare const TruncateErrorNotDirectory_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-not-directory", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-not-directory", unknown>>, unknown>;
14
+ export declare class TruncateErrorNotDirectory extends TruncateErrorNotDirectory_base {
15
+ }
16
+ declare const TruncateErrorNoSpace_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-no-space", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-no-space", unknown>>, unknown>;
17
+ export declare class TruncateErrorNoSpace extends TruncateErrorNoSpace_base {
18
+ }
19
+ declare const TruncateErrorReadOnly_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-read-only", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-read-only", unknown>>, unknown>;
20
+ export declare class TruncateErrorReadOnly extends TruncateErrorReadOnly_base {
21
+ }
22
+ declare const TruncateErrorInvalidArgument_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-invalid-argument", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-invalid-argument", unknown>>, unknown>;
23
+ export declare class TruncateErrorInvalidArgument extends TruncateErrorInvalidArgument_base {
24
+ }
25
+ declare const TruncateErrorTooManyOpenFiles_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-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-truncate-too-many-open-files", unknown>>, unknown>;
26
+ export declare class TruncateErrorTooManyOpenFiles extends TruncateErrorTooManyOpenFiles_base {
27
+ }
28
+ declare const TruncateErrorBusy_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-busy", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-busy", unknown>>, unknown>;
29
+ export declare class TruncateErrorBusy extends TruncateErrorBusy_base {
30
+ }
31
+ declare const TruncateError_base: abstract new (error: Error) => DCommon.DuploJSError<"file-system-truncate-error", Error> & import('@duplojs/lang/kind').Kind<import('@duplojs/lang/kind').Handler<import('@duplojs/lang/kind').Definition<"@DuplojsLangCommon/duplojs-error-file-system-truncate-error", unknown>>, unknown>;
32
+ export declare class TruncateError extends TruncateError_base {
33
+ }
34
+ export type TruncateErrors = (TruncateErrorNotFound | TruncateErrorPermissionDenied | TruncateErrorIsDirectory | TruncateErrorNotDirectory | TruncateErrorNoSpace | TruncateErrorReadOnly | TruncateErrorInvalidArgument | TruncateErrorTooManyOpenFiles | TruncateErrorBusy | TruncateError);
35
+ export type TruncateResult = (DEither.Right<"file-system-truncate", void> | DEither.Left<"file-system-truncate-error", TruncateErrors>);
5
36
  declare module '../implementor' {
6
37
  interface ServerFunction {
7
- truncate(path: string & DPath.Path, size?: number): Promise<TruncateResult>;
38
+ truncate(path: DPath.AnyPath, size?: number): Promise<TruncateResult>;
8
39
  }
9
40
  }
10
- export declare const truncate: (path: string & DPath.Path, size?: number) => Promise<TruncateResult>;
41
+ export declare const truncate: (path: DPath.AnyPath, size?: number) => Promise<TruncateResult>;
42
+ export {};