@duplojs/server 0.0.0-stage → 0.1.0-beta.1

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 (262) hide show
  1. package/README +9 -0
  2. package/dist/_virtual/_rolldown/runtime.cjs +33 -0
  3. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  4. package/dist/command/argument.cjs +27 -0
  5. package/dist/command/argument.d.ts +18 -0
  6. package/dist/command/argument.mjs +24 -0
  7. package/dist/command/create.cjs +94 -0
  8. package/dist/command/create.d.ts +47 -0
  9. package/dist/command/create.mjs +88 -0
  10. package/dist/command/error.cjs +153 -0
  11. package/dist/command/error.d.ts +53 -0
  12. package/dist/command/error.mjs +140 -0
  13. package/dist/command/exec.cjs +19 -0
  14. package/dist/command/exec.d.ts +13 -0
  15. package/dist/command/exec.mjs +17 -0
  16. package/dist/command/execOptions.cjs +41 -0
  17. package/dist/command/execOptions.d.ts +14 -0
  18. package/dist/command/execOptions.mjs +37 -0
  19. package/dist/command/help.cjs +257 -0
  20. package/dist/command/help.d.ts +10 -0
  21. package/dist/command/help.mjs +244 -0
  22. package/dist/command/index.cjs +78 -0
  23. package/dist/command/index.d.ts +8 -0
  24. package/dist/command/index.mjs +45 -0
  25. package/dist/command/kind.cjs +7 -0
  26. package/dist/command/kind.d.ts +2 -0
  27. package/dist/command/kind.mjs +5 -0
  28. package/dist/command/options/base.cjs +68 -0
  29. package/dist/command/options/base.d.ts +24 -0
  30. package/dist/command/options/base.mjs +63 -0
  31. package/dist/command/options/defaults/array.cjs +35 -0
  32. package/dist/command/options/defaults/array.d.ts +24 -0
  33. package/dist/command/options/defaults/array.mjs +29 -0
  34. package/dist/command/options/defaults/boolean.cjs +14 -0
  35. package/dist/command/options/defaults/boolean.d.ts +11 -0
  36. package/dist/command/options/defaults/boolean.mjs +13 -0
  37. package/dist/command/options/defaults/index.d.ts +3 -0
  38. package/dist/command/options/defaults/simple.cjs +25 -0
  39. package/dist/command/options/defaults/simple.d.ts +16 -0
  40. package/dist/command/options/defaults/simple.mjs +22 -0
  41. package/dist/command/options/identifier.cjs +7 -0
  42. package/dist/command/options/identifier.d.ts +4 -0
  43. package/dist/command/options/identifier.mjs +5 -0
  44. package/dist/command/options/index.d.ts +4 -0
  45. package/dist/command/options/types/index.d.ts +1 -0
  46. package/dist/command/options/types/options.d.ts +9 -0
  47. package/dist/command/types/eligibleType.d.ts +4 -0
  48. package/dist/command/types/forbiddenDuplicateName.d.ts +11 -0
  49. package/dist/command/types/index.d.ts +2 -0
  50. package/dist/common/environmentVariable/expandEnvironmentVariables.cjs +27 -0
  51. package/dist/common/environmentVariable/expandEnvironmentVariables.d.ts +2 -0
  52. package/dist/common/environmentVariable/expandEnvironmentVariables.mjs +22 -0
  53. package/dist/common/environmentVariable/index.cjs +47 -0
  54. package/dist/common/environmentVariable/index.d.ts +16 -0
  55. package/dist/common/environmentVariable/index.mjs +41 -0
  56. package/dist/common/environmentVariable/overrideEnvironmentVariables.cjs +13 -0
  57. package/dist/common/environmentVariable/overrideEnvironmentVariables.d.ts +3 -0
  58. package/dist/common/environmentVariable/overrideEnvironmentVariables.mjs +9 -0
  59. package/dist/common/environmentVariable/parseEnvironmentFiles.cjs +32 -0
  60. package/dist/common/environmentVariable/parseEnvironmentFiles.d.ts +4 -0
  61. package/dist/common/environmentVariable/parseEnvironmentFiles.mjs +26 -0
  62. package/dist/common/environmentVariableOrThrow.cjs +23 -0
  63. package/dist/common/environmentVariableOrThrow.d.ts +12 -0
  64. package/dist/common/environmentVariableOrThrow.mjs +19 -0
  65. package/dist/common/exitProcess.cjs +7 -0
  66. package/dist/common/exitProcess.d.ts +6 -0
  67. package/dist/common/exitProcess.mjs +8 -0
  68. package/dist/common/getCurrentWorkDirectory.cjs +15 -0
  69. package/dist/common/getCurrentWorkDirectory.d.ts +8 -0
  70. package/dist/common/getCurrentWorkDirectory.mjs +11 -0
  71. package/dist/common/getCurrentWorkDirectoryOrThrow.cjs +25 -0
  72. package/dist/common/getCurrentWorkDirectoryOrThrow.d.ts +8 -0
  73. package/dist/common/getCurrentWorkDirectoryOrThrow.mjs +20 -0
  74. package/dist/common/getProcessArguments.cjs +18 -0
  75. package/dist/common/getProcessArguments.d.ts +6 -0
  76. package/dist/common/getProcessArguments.mjs +18 -0
  77. package/dist/common/index.cjs +41 -0
  78. package/dist/common/index.d.ts +8 -0
  79. package/dist/common/index.mjs +25 -0
  80. package/dist/common/setCurrentWorkingDirectory.cjs +11 -0
  81. package/dist/common/setCurrentWorkingDirectory.d.ts +8 -0
  82. package/dist/common/setCurrentWorkingDirectory.mjs +9 -0
  83. package/dist/common/setCurrentWorkingDirectoryOrThrow.cjs +23 -0
  84. package/dist/common/setCurrentWorkingDirectoryOrThrow.d.ts +8 -0
  85. package/dist/common/setCurrentWorkingDirectoryOrThrow.mjs +18 -0
  86. package/dist/dataStructure/common/codec/defaults/index.d.ts +2 -0
  87. package/dist/dataStructure/common/codec/defaults/json.cjs +14 -0
  88. package/dist/dataStructure/common/codec/defaults/json.d.ts +9 -0
  89. package/dist/dataStructure/common/codec/defaults/json.mjs +11 -0
  90. package/dist/dataStructure/common/codec/defaults/string.cjs +14 -0
  91. package/dist/dataStructure/common/codec/defaults/string.d.ts +13 -0
  92. package/dist/dataStructure/common/codec/defaults/string.mjs +11 -0
  93. package/dist/dataStructure/common/codec/index.d.ts +1 -0
  94. package/dist/dataStructure/common/error/defaultInterpreter.cjs +27 -0
  95. package/dist/dataStructure/common/error/defaultInterpreter.d.ts +64 -0
  96. package/dist/dataStructure/common/error/defaultInterpreter.mjs +24 -0
  97. package/dist/dataStructure/common/error/index.d.ts +1 -0
  98. package/dist/dataStructure/common/index.d.ts +2 -0
  99. package/dist/dataStructure/constraint/exist.cjs +19 -0
  100. package/dist/dataStructure/constraint/exist.d.ts +10 -0
  101. package/dist/dataStructure/constraint/exist.mjs +15 -0
  102. package/dist/dataStructure/constraint/index.d.ts +4 -0
  103. package/dist/dataStructure/constraint/mimeType.cjs +18 -0
  104. package/dist/dataStructure/constraint/mimeType.d.ts +11 -0
  105. package/dist/dataStructure/constraint/mimeType.mjs +14 -0
  106. package/dist/dataStructure/constraint/size.cjs +29 -0
  107. package/dist/dataStructure/constraint/size.d.ts +16 -0
  108. package/dist/dataStructure/constraint/size.mjs +24 -0
  109. package/dist/dataStructure/constraint/types/constraints.d.ts +10 -0
  110. package/dist/dataStructure/constraint/types/index.d.ts +1 -0
  111. package/dist/dataStructure/fundamentalType/file.cjs +11 -0
  112. package/dist/dataStructure/fundamentalType/file.d.ts +8 -0
  113. package/dist/dataStructure/fundamentalType/file.mjs +8 -0
  114. package/dist/dataStructure/fundamentalType/index.d.ts +2 -0
  115. package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +6 -0
  116. package/dist/dataStructure/fundamentalType/types/index.d.ts +1 -0
  117. package/dist/dataStructure/helper/exist.cjs +7 -0
  118. package/dist/dataStructure/helper/exist.d.ts +2 -0
  119. package/dist/dataStructure/helper/exist.mjs +7 -0
  120. package/dist/dataStructure/helper/file.cjs +10 -0
  121. package/dist/dataStructure/helper/file.d.ts +3 -0
  122. package/dist/dataStructure/helper/file.mjs +8 -0
  123. package/dist/dataStructure/helper/index.d.ts +4 -0
  124. package/dist/dataStructure/helper/mimeType.cjs +7 -0
  125. package/dist/dataStructure/helper/mimeType.d.ts +2 -0
  126. package/dist/dataStructure/helper/mimeType.mjs +7 -0
  127. package/dist/dataStructure/helper/size.cjs +7 -0
  128. package/dist/dataStructure/helper/size.d.ts +2 -0
  129. package/dist/dataStructure/helper/size.mjs +7 -0
  130. package/dist/dataStructure/index.cjs +62 -0
  131. package/dist/dataStructure/index.d.ts +6 -0
  132. package/dist/dataStructure/index.mjs +38 -0
  133. package/dist/dataStructure/kind.cjs +7 -0
  134. package/dist/dataStructure/kind.d.ts +2 -0
  135. package/dist/dataStructure/kind.mjs +5 -0
  136. package/dist/dataStructure/type/file.cjs +14 -0
  137. package/dist/dataStructure/type/file.d.ts +11 -0
  138. package/dist/dataStructure/type/file.mjs +11 -0
  139. package/dist/dataStructure/type/index.d.ts +2 -0
  140. package/dist/dataStructure/type/types/index.d.ts +1 -0
  141. package/dist/dataStructure/type/types/types.d.ts +6 -0
  142. package/dist/file/appendFile.cjs +43 -0
  143. package/dist/file/appendFile.d.ts +11 -0
  144. package/dist/file/appendFile.mjs +41 -0
  145. package/dist/file/appendTextFile.cjs +43 -0
  146. package/dist/file/appendTextFile.d.ts +11 -0
  147. package/dist/file/appendTextFile.mjs +41 -0
  148. package/dist/file/copy.cjs +31 -0
  149. package/dist/file/copy.d.ts +11 -0
  150. package/dist/file/copy.mjs +29 -0
  151. package/dist/file/createEntryInterface.cjs +16 -0
  152. package/dist/file/createEntryInterface.d.ts +3 -0
  153. package/dist/file/createEntryInterface.mjs +13 -0
  154. package/dist/file/ensureDirectory.cjs +32 -0
  155. package/dist/file/ensureDirectory.d.ts +10 -0
  156. package/dist/file/ensureDirectory.mjs +30 -0
  157. package/dist/file/ensureFile.cjs +38 -0
  158. package/dist/file/ensureFile.d.ts +10 -0
  159. package/dist/file/ensureFile.mjs +36 -0
  160. package/dist/file/exists.cjs +29 -0
  161. package/dist/file/exists.d.ts +10 -0
  162. package/dist/file/exists.mjs +27 -0
  163. package/dist/file/fileInterface.cjs +74 -0
  164. package/dist/file/fileInterface.d.ts +30 -0
  165. package/dist/file/fileInterface.mjs +69 -0
  166. package/dist/file/folderInterface.cjs +74 -0
  167. package/dist/file/folderInterface.d.ts +32 -0
  168. package/dist/file/folderInterface.mjs +69 -0
  169. package/dist/file/index.cjs +122 -0
  170. package/dist/file/index.d.ts +36 -0
  171. package/dist/file/index.mjs +79 -0
  172. package/dist/file/link.cjs +44 -0
  173. package/dist/file/link.d.ts +11 -0
  174. package/dist/file/link.mjs +42 -0
  175. package/dist/file/linkStat.cjs +84 -0
  176. package/dist/file/linkStat.d.ts +11 -0
  177. package/dist/file/linkStat.mjs +80 -0
  178. package/dist/file/makeDirectory.cjs +36 -0
  179. package/dist/file/makeDirectory.d.ts +14 -0
  180. package/dist/file/makeDirectory.mjs +34 -0
  181. package/dist/file/makeTemporaryDirectory.cjs +30 -0
  182. package/dist/file/makeTemporaryDirectory.d.ts +9 -0
  183. package/dist/file/makeTemporaryDirectory.mjs +28 -0
  184. package/dist/file/makeTemporaryFile.cjs +45 -0
  185. package/dist/file/makeTemporaryFile.d.ts +10 -0
  186. package/dist/file/makeTemporaryFile.mjs +41 -0
  187. package/dist/file/move.cjs +45 -0
  188. package/dist/file/move.d.ts +11 -0
  189. package/dist/file/move.mjs +43 -0
  190. package/dist/file/readDirectory.cjs +20 -0
  191. package/dist/file/readDirectory.d.ts +14 -0
  192. package/dist/file/readDirectory.mjs +18 -0
  193. package/dist/file/readFile.cjs +33 -0
  194. package/dist/file/readFile.d.ts +10 -0
  195. package/dist/file/readFile.mjs +31 -0
  196. package/dist/file/readJsonFile.cjs +33 -0
  197. package/dist/file/readJsonFile.d.ts +11 -0
  198. package/dist/file/readJsonFile.mjs +31 -0
  199. package/dist/file/readLink.cjs +30 -0
  200. package/dist/file/readLink.d.ts +10 -0
  201. package/dist/file/readLink.mjs +28 -0
  202. package/dist/file/readTextFile.cjs +33 -0
  203. package/dist/file/readTextFile.d.ts +10 -0
  204. package/dist/file/readTextFile.mjs +31 -0
  205. package/dist/file/realPath.cjs +28 -0
  206. package/dist/file/realPath.d.ts +10 -0
  207. package/dist/file/realPath.mjs +26 -0
  208. package/dist/file/relocate.cjs +56 -0
  209. package/dist/file/relocate.d.ts +11 -0
  210. package/dist/file/relocate.mjs +53 -0
  211. package/dist/file/remove.cjs +38 -0
  212. package/dist/file/remove.d.ts +14 -0
  213. package/dist/file/remove.mjs +36 -0
  214. package/dist/file/rename.cjs +56 -0
  215. package/dist/file/rename.d.ts +11 -0
  216. package/dist/file/rename.mjs +53 -0
  217. package/dist/file/setMode.cjs +51 -0
  218. package/dist/file/setMode.d.ts +26 -0
  219. package/dist/file/setMode.mjs +48 -0
  220. package/dist/file/setOwner.cjs +37 -0
  221. package/dist/file/setOwner.d.ts +15 -0
  222. package/dist/file/setOwner.mjs +35 -0
  223. package/dist/file/setTime.cjs +39 -0
  224. package/dist/file/setTime.d.ts +17 -0
  225. package/dist/file/setTime.mjs +36 -0
  226. package/dist/file/stat.cjs +85 -0
  227. package/dist/file/stat.d.ts +42 -0
  228. package/dist/file/stat.mjs +81 -0
  229. package/dist/file/symlink.cjs +42 -0
  230. package/dist/file/symlink.d.ts +19 -0
  231. package/dist/file/symlink.mjs +40 -0
  232. package/dist/file/truncate.cjs +38 -0
  233. package/dist/file/truncate.d.ts +10 -0
  234. package/dist/file/truncate.mjs +35 -0
  235. package/dist/file/types/fileSystemEither.d.ts +2 -0
  236. package/dist/file/types/index.d.ts +1 -0
  237. package/dist/file/unknownEntryInterface.cjs +36 -0
  238. package/dist/file/unknownEntryInterface.d.ts +15 -0
  239. package/dist/file/unknownEntryInterface.mjs +33 -0
  240. package/dist/file/walkDirectory.cjs +34 -0
  241. package/dist/file/walkDirectory.d.ts +16 -0
  242. package/dist/file/walkDirectory.mjs +28 -0
  243. package/dist/file/writeFile.cjs +44 -0
  244. package/dist/file/writeFile.d.ts +11 -0
  245. package/dist/file/writeFile.mjs +42 -0
  246. package/dist/file/writeJsonFile.cjs +56 -0
  247. package/dist/file/writeJsonFile.d.ts +15 -0
  248. package/dist/file/writeJsonFile.mjs +53 -0
  249. package/dist/file/writeTextFile.cjs +44 -0
  250. package/dist/file/writeTextFile.d.ts +11 -0
  251. package/dist/file/writeTextFile.mjs +42 -0
  252. package/dist/implementor.cjs +64 -0
  253. package/dist/implementor.d.ts +35 -0
  254. package/dist/implementor.mjs +52 -0
  255. package/dist/index.cjs +74 -0
  256. package/dist/index.d.ts +9 -0
  257. package/dist/index.mjs +14 -0
  258. package/dist/kind.cjs +7 -0
  259. package/dist/kind.d.ts +2 -0
  260. package/dist/kind.mjs +5 -0
  261. package/package.json +81 -3
  262. package/README.md +0 -3
@@ -0,0 +1,19 @@
1
+ import { FileSystemEither } from './types';
2
+ import * as DEither from "@duplojs/lang/either";
3
+ import type * as DPath from "@duplojs/lang/path";
4
+ export interface SymlinkParams {
5
+ /**
6
+ * @remarks
7
+ * Specify the symbolic link type as file, directory or NTFS junction.
8
+ * This option only applies to Windows and is ignored on other operating systems.
9
+ */
10
+ type: "file" | "dir" | "junction";
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>>;
13
+ declare module '../implementor' {
14
+ interface ServerFunction {
15
+ symlink(oldPath: string & DPath.Path, newPath: string & DPath.Path, params?: SymlinkParams): Promise<SymlinkResult>;
16
+ }
17
+ }
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>;
@@ -0,0 +1,40 @@
1
+ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
2
+ import * as DEither from "@duplojs/lang/either";
3
+ //#region scripts/file/symlink.ts
4
+ 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);
14
+ }
15
+ return DEither.left("file-system-symlink-error", error);
16
+ }
17
+ 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);
25
+ }
26
+ 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
+ },
30
+ DENO: (oldPath, newPath, params) => Deno.symlink(oldPath, newPath, params).then(() => DEither.right("file-system-symlink")).catch(handleDenoSymlinkError)
31
+ });
32
+ function symlink(...args) {
33
+ if (args.length === 1) {
34
+ const [newPath] = args;
35
+ return (oldPath) => symlinkImplementation(oldPath, newPath);
36
+ }
37
+ return symlinkImplementation(...args);
38
+ }
39
+ //#endregion
40
+ export { symlink };
@@ -0,0 +1,38 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_implementor = require("../implementor.cjs");
3
+ let _duplojs_lang_common = require("@duplojs/lang/common");
4
+ _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
5
+ let _duplojs_lang_either = require("@duplojs/lang/either");
6
+ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
7
+ //#region scripts/file/truncate.ts
8
+ 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
+ }
20
+ return _duplojs_lang_either.left("file-system-truncate-error", error);
21
+ }
22
+ 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);
30
+ }
31
+ 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
+ },
35
+ 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
+ });
37
+ //#endregion
38
+ exports.truncate = truncate;
@@ -0,0 +1,10 @@
1
+ import { FileSystemEither } from './types';
2
+ import * as DEither from "@duplojs/lang/either";
3
+ import type * as DPath from "@duplojs/lang/path";
4
+ export type 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>>;
5
+ declare module '../implementor' {
6
+ interface ServerFunction {
7
+ truncate(path: string & DPath.Path, size?: number): Promise<TruncateResult>;
8
+ }
9
+ }
10
+ export declare const truncate: (path: string & DPath.Path, size?: number) => Promise<TruncateResult>;
@@ -0,0 +1,35 @@
1
+ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
2
+ import * as DCommon from "@duplojs/lang/common";
3
+ import * as DEither from "@duplojs/lang/either";
4
+ //#region scripts/file/truncate.ts
5
+ 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
+ }
17
+ return DEither.left("file-system-truncate-error", error);
18
+ }
19
+ 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);
27
+ }
28
+ 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
+ },
32
+ 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
+ });
34
+ //#endregion
35
+ export { truncate };
@@ -0,0 +1,2 @@
1
+ import type * as DEither from "@duplojs/lang/either";
2
+ export type FileSystemEither<GenericEither extends DEither.Left | DEither.Right> = GenericEither extends DEither.Left<infer GenericInformation, infer GenericValue> ? DEither.Left<`file-system-${GenericInformation}`, GenericValue> : GenericEither extends DEither.Right<infer GenericInformation, infer GenericValue> ? DEither.Right<`file-system-${GenericInformation}`, GenericValue> : never;
@@ -0,0 +1 @@
1
+ export type * from './fileSystemEither';
@@ -0,0 +1,36 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_kind = require("../kind.cjs");
3
+ const require_stat = require("./stat.cjs");
4
+ const require_exists = require("./exists.cjs");
5
+ let _duplojs_lang_path = require("@duplojs/lang/path");
6
+ _duplojs_lang_path = require_runtime.__toESM(_duplojs_lang_path, 1);
7
+ //#region scripts/file/unknownEntryInterface.ts
8
+ const unknownInterfaceKind = require_kind.createKind("unknownInterface");
9
+ function createUnknownEntryInterface(path) {
10
+ function getName() {
11
+ return _duplojs_lang_path.getBaseName(path);
12
+ }
13
+ function getParentPath() {
14
+ return _duplojs_lang_path.getParentFolderPath(path);
15
+ }
16
+ function localStat() {
17
+ return require_stat.stat(path);
18
+ }
19
+ function exist() {
20
+ return require_exists.exists(path);
21
+ }
22
+ return {
23
+ path,
24
+ getName,
25
+ getParentPath,
26
+ stat: localStat,
27
+ exist,
28
+ [unknownInterfaceKind.runTimeKey]: null
29
+ };
30
+ }
31
+ function isUnknownEntryInterface(input) {
32
+ return unknownInterfaceKind.has(input);
33
+ }
34
+ //#endregion
35
+ exports.createUnknownEntryInterface = createUnknownEntryInterface;
36
+ exports.isUnknownEntryInterface = isUnknownEntryInterface;
@@ -0,0 +1,15 @@
1
+ import { StatResult } from './stat';
2
+ import { ExistsResult } from './exists';
3
+ import type * as DKind from "@duplojs/lang/kind";
4
+ import * as DPath from "@duplojs/lang/path";
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;
10
+ stat(): Promise<StatResult>;
11
+ exist(): Promise<ExistsResult>;
12
+ }
13
+ export declare function createUnknownEntryInterface(path: string & DPath.Path): UnknownEntryInterface;
14
+ export declare function isUnknownEntryInterface(input: unknown): input is UnknownEntryInterface;
15
+ export {};
@@ -0,0 +1,33 @@
1
+ import { createKind } from "../kind.mjs";
2
+ import { stat } from "./stat.mjs";
3
+ import { exists } from "./exists.mjs";
4
+ import * as DPath from "@duplojs/lang/path";
5
+ //#region scripts/file/unknownEntryInterface.ts
6
+ const unknownInterfaceKind = createKind("unknownInterface");
7
+ function createUnknownEntryInterface(path) {
8
+ function getName() {
9
+ return DPath.getBaseName(path);
10
+ }
11
+ function getParentPath() {
12
+ return DPath.getParentFolderPath(path);
13
+ }
14
+ function localStat() {
15
+ return stat(path);
16
+ }
17
+ function exist() {
18
+ return exists(path);
19
+ }
20
+ return {
21
+ path,
22
+ getName,
23
+ getParentPath,
24
+ stat: localStat,
25
+ exist,
26
+ [unknownInterfaceKind.runTimeKey]: null
27
+ };
28
+ }
29
+ function isUnknownEntryInterface(input) {
30
+ return unknownInterfaceKind.has(input);
31
+ }
32
+ //#endregion
33
+ export { createUnknownEntryInterface, isUnknownEntryInterface };
@@ -0,0 +1,34 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_implementor = require("../implementor.cjs");
3
+ const require_fileInterface = require("./fileInterface.cjs");
4
+ const require_unknownEntryInterface = require("./unknownEntryInterface.cjs");
5
+ const require_folderInterface = require("./folderInterface.cjs");
6
+ let _duplojs_lang_common = require("@duplojs/lang/common");
7
+ _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
8
+ let _duplojs_lang_either = require("@duplojs/lang/either");
9
+ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
10
+ let _duplojs_lang_path = require("@duplojs/lang/path");
11
+ _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
+ let _duplojs_lang_generator = require("@duplojs/lang/generator");
15
+ _duplojs_lang_generator = require_runtime.__toESM(_duplojs_lang_generator, 1);
16
+ //#region scripts/file/walkDirectory.ts
17
+ 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);
24
+ }
25
+ return _duplojs_lang_either.left("file-system-walk-directory-error", error);
26
+ }
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
+ } });
33
+ //#endregion
34
+ exports.walkDirectory = walkDirectory;
@@ -0,0 +1,16 @@
1
+ import { FileInterface } from './fileInterface';
2
+ import { FolderInterface } from './folderInterface';
3
+ import { UnknownEntryInterface } from './unknownEntryInterface';
4
+ import { FileSystemEither } from './types';
5
+ import * as DPath from "@duplojs/lang/path";
6
+ import * as DEither from "@duplojs/lang/either";
7
+ export interface WalkDirectoryParams {
8
+ recursive?: boolean;
9
+ }
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>>;
11
+ declare module '../implementor' {
12
+ interface ServerFunction {
13
+ walkDirectory(path: string & DPath.Path, params?: WalkDirectoryParams): Promise<WalkDirectoryResult>;
14
+ }
15
+ }
16
+ export declare const walkDirectory: (path: string & DPath.Path, params?: WalkDirectoryParams) => Promise<WalkDirectoryResult>;
@@ -0,0 +1,28 @@
1
+ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
2
+ import { createFileInterface } from "./fileInterface.mjs";
3
+ import { createUnknownEntryInterface } from "./unknownEntryInterface.mjs";
4
+ import { createFolderInterface } from "./folderInterface.mjs";
5
+ import * as DCommon from "@duplojs/lang/common";
6
+ import * as DEither from "@duplojs/lang/either";
7
+ import * as DPath from "@duplojs/lang/path";
8
+ import * as DPattern from "@duplojs/lang/pattern";
9
+ import * as DGenerator from "@duplojs/lang/generator";
10
+ //#region scripts/file/walkDirectory.ts
11
+ 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);
18
+ }
19
+ return DEither.left("file-system-walk-directory-error", error);
20
+ }
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
+ } });
27
+ //#endregion
28
+ export { walkDirectory };
@@ -0,0 +1,44 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_implementor = require("../implementor.cjs");
3
+ let _duplojs_lang_either = require("@duplojs/lang/either");
4
+ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
5
+ //#region scripts/file/writeFile.ts
6
+ 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);
17
+ }
18
+ return _duplojs_lang_either.left("file-system-write-file-error", error);
19
+ }
20
+ 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);
28
+ }
29
+ 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
+ },
33
+ DENO: (path, data) => Deno.writeFile(path, data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleDenoWriteFileError),
34
+ BUN: (path, data) => Bun.file(path).write(data).then(() => _duplojs_lang_either.right("file-system-write-file")).catch(handleNodeWriteFileError)
35
+ });
36
+ function writeFile(...args) {
37
+ if (args.length === 1) {
38
+ const [data] = args;
39
+ return (path) => writeFileImplementation(path, data);
40
+ }
41
+ return writeFileImplementation(...args);
42
+ }
43
+ //#endregion
44
+ exports.writeFile = writeFile;
@@ -0,0 +1,11 @@
1
+ import { FileSystemEither } from './types';
2
+ import * as DEither from "@duplojs/lang/either";
3
+ import type * as DPath from "@duplojs/lang/path";
4
+ export type 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>>;
5
+ declare module '../implementor' {
6
+ interface ServerFunction {
7
+ writeFile(path: string & DPath.Path, data: Uint8Array): Promise<WriteFileResult>;
8
+ }
9
+ }
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>;
@@ -0,0 +1,42 @@
1
+ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
2
+ import * as DEither from "@duplojs/lang/either";
3
+ //#region scripts/file/writeFile.ts
4
+ 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);
15
+ }
16
+ return DEither.left("file-system-write-file-error", error);
17
+ }
18
+ 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);
26
+ }
27
+ 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
+ },
31
+ DENO: (path, data) => Deno.writeFile(path, data).then(() => DEither.right("file-system-write-file")).catch(handleDenoWriteFileError),
32
+ BUN: (path, data) => Bun.file(path).write(data).then(() => DEither.right("file-system-write-file")).catch(handleNodeWriteFileError)
33
+ });
34
+ function writeFile(...args) {
35
+ if (args.length === 1) {
36
+ const [data] = args;
37
+ return (path) => writeFileImplementation(path, data);
38
+ }
39
+ return writeFileImplementation(...args);
40
+ }
41
+ //#endregion
42
+ export { writeFile };
@@ -0,0 +1,56 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_implementor = require("../implementor.cjs");
3
+ let _duplojs_lang_common = require("@duplojs/lang/common");
4
+ _duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
5
+ let _duplojs_lang_either = require("@duplojs/lang/either");
6
+ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
7
+ //#region scripts/file/writeJsonFile.ts
8
+ function handleNodeWriteJsonFileError(error) {
9
+ if (typeof error === "object" && error !== null && "code" in error) {
10
+ if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-write-json-file-not-found", error);
11
+ else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-write-json-file-permission-denied", error);
12
+ else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-write-json-file-is-directory", error);
13
+ else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-write-json-file-not-directory", error);
14
+ else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-write-json-file-no-space", error);
15
+ else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-write-json-file-read-only", error);
16
+ else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-write-json-file-invalid-argument", error);
17
+ else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-write-json-file-too-many-open-files", error);
18
+ else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-write-json-file-busy", error);
19
+ }
20
+ return _duplojs_lang_either.left("file-system-write-json-file-error", error);
21
+ }
22
+ function handleDenoWriteJsonFileError(error) {
23
+ if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-write-json-file-not-found", error);
24
+ if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-write-json-file-permission-denied", error);
25
+ if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-write-json-file-is-directory", error);
26
+ if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-write-json-file-not-directory", error);
27
+ if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-write-json-file-invalid-argument", error);
28
+ if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-write-json-file-busy", error);
29
+ return _duplojs_lang_either.left("file-system-write-json-file-error", error);
30
+ }
31
+ const writeJsonFileImplementation = require_implementor.implementFunction("writeJsonFile", {
32
+ NODE: async (path, data, params) => {
33
+ const fs = await require_implementor.nodeFileSystem.value;
34
+ return _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
35
+ "safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", value),
36
+ "safe-callback-success": (value) => fs.writeFile(path, value, { encoding: "utf-8" }).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
37
+ }));
38
+ },
39
+ DENO: async (path, data, params) => _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
40
+ "safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", value),
41
+ "safe-callback-success": (value) => Deno.writeTextFile(path, value).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleDenoWriteJsonFileError)
42
+ })),
43
+ BUN: async (path, data, params) => _duplojs_lang_common.pipe(_duplojs_lang_either.safeCallback(() => JSON.stringify(data, null, params?.space)), _duplojs_lang_either.matchInformation({
44
+ "safe-callback-error": (value) => _duplojs_lang_either.left("file-system-write-json-file-error", value),
45
+ "safe-callback-success": (value) => Bun.file(path).write(value).then(() => _duplojs_lang_either.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
46
+ }))
47
+ });
48
+ function writeJsonFile(...args) {
49
+ if (args.length === 1) {
50
+ const [data] = args;
51
+ return (path) => writeJsonFileImplementation(path, data);
52
+ }
53
+ return writeJsonFileImplementation(...args);
54
+ }
55
+ //#endregion
56
+ exports.writeJsonFile = writeJsonFile;
@@ -0,0 +1,15 @@
1
+ import { FileSystemEither } from './types';
2
+ import * as DEither from "@duplojs/lang/either";
3
+ import type * as DPath from "@duplojs/lang/path";
4
+ interface WriteJsonFile {
5
+ space?: number;
6
+ }
7
+ export type WriteJsonFileResult = FileSystemEither<DEither.Right<"write-json-file", void> | DEither.Left<"write-json-file-not-found", unknown> | DEither.Left<"write-json-file-permission-denied", unknown> | DEither.Left<"write-json-file-is-directory", unknown> | DEither.Left<"write-json-file-not-directory", unknown> | DEither.Left<"write-json-file-no-space", unknown> | DEither.Left<"write-json-file-read-only", unknown> | DEither.Left<"write-json-file-invalid-argument", unknown> | DEither.Left<"write-json-file-too-many-open-files", unknown> | DEither.Left<"write-json-file-busy", unknown> | DEither.Left<"write-json-file-error", unknown>>;
8
+ declare module '../implementor' {
9
+ interface ServerFunction {
10
+ writeJsonFile(path: string & DPath.Path, data: unknown, params?: WriteJsonFile): Promise<WriteJsonFileResult>;
11
+ }
12
+ }
13
+ export declare function writeJsonFile(data: unknown): (path: string & DPath.Path) => Promise<WriteJsonFileResult>;
14
+ export declare function writeJsonFile(path: string & DPath.Path, data: unknown, params?: WriteJsonFile): Promise<WriteJsonFileResult>;
15
+ export {};
@@ -0,0 +1,53 @@
1
+ import { implementFunction, nodeFileSystem } from "../implementor.mjs";
2
+ import * as DCommon from "@duplojs/lang/common";
3
+ import * as DEither from "@duplojs/lang/either";
4
+ //#region scripts/file/writeJsonFile.ts
5
+ function handleNodeWriteJsonFileError(error) {
6
+ if (typeof error === "object" && error !== null && "code" in error) {
7
+ if (error.code === "ENOENT") return DEither.left("file-system-write-json-file-not-found", error);
8
+ else if (error.code === "EACCES" || error.code === "EPERM") return DEither.left("file-system-write-json-file-permission-denied", error);
9
+ else if (error.code === "EISDIR") return DEither.left("file-system-write-json-file-is-directory", error);
10
+ else if (error.code === "ENOTDIR") return DEither.left("file-system-write-json-file-not-directory", error);
11
+ else if (error.code === "ENOSPC") return DEither.left("file-system-write-json-file-no-space", error);
12
+ else if (error.code === "EROFS") return DEither.left("file-system-write-json-file-read-only", error);
13
+ else if (error.code === "EINVAL") return DEither.left("file-system-write-json-file-invalid-argument", error);
14
+ else if (error.code === "EMFILE" || error.code === "ENFILE") return DEither.left("file-system-write-json-file-too-many-open-files", error);
15
+ else if (error.code === "EBUSY") return DEither.left("file-system-write-json-file-busy", error);
16
+ }
17
+ return DEither.left("file-system-write-json-file-error", error);
18
+ }
19
+ function handleDenoWriteJsonFileError(error) {
20
+ if (error instanceof Deno.errors.NotFound) return DEither.left("file-system-write-json-file-not-found", error);
21
+ if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return DEither.left("file-system-write-json-file-permission-denied", error);
22
+ if (error instanceof Deno.errors.IsADirectory) return DEither.left("file-system-write-json-file-is-directory", error);
23
+ if (error instanceof Deno.errors.NotADirectory) return DEither.left("file-system-write-json-file-not-directory", error);
24
+ if (error instanceof Deno.errors.InvalidData) return DEither.left("file-system-write-json-file-invalid-argument", error);
25
+ if (error instanceof Deno.errors.Busy) return DEither.left("file-system-write-json-file-busy", error);
26
+ return DEither.left("file-system-write-json-file-error", error);
27
+ }
28
+ const writeJsonFileImplementation = implementFunction("writeJsonFile", {
29
+ NODE: async (path, data, params) => {
30
+ const fs = await nodeFileSystem.value;
31
+ return DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
32
+ "safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", value),
33
+ "safe-callback-success": (value) => fs.writeFile(path, value, { encoding: "utf-8" }).then(() => DEither.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
34
+ }));
35
+ },
36
+ DENO: async (path, data, params) => DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
37
+ "safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", value),
38
+ "safe-callback-success": (value) => Deno.writeTextFile(path, value).then(() => DEither.right("file-system-write-json-file")).catch(handleDenoWriteJsonFileError)
39
+ })),
40
+ BUN: async (path, data, params) => DCommon.pipe(DEither.safeCallback(() => JSON.stringify(data, null, params?.space)), DEither.matchInformation({
41
+ "safe-callback-error": (value) => DEither.left("file-system-write-json-file-error", value),
42
+ "safe-callback-success": (value) => Bun.file(path).write(value).then(() => DEither.right("file-system-write-json-file")).catch(handleNodeWriteJsonFileError)
43
+ }))
44
+ });
45
+ function writeJsonFile(...args) {
46
+ if (args.length === 1) {
47
+ const [data] = args;
48
+ return (path) => writeJsonFileImplementation(path, data);
49
+ }
50
+ return writeJsonFileImplementation(...args);
51
+ }
52
+ //#endregion
53
+ export { writeJsonFile };
@@ -0,0 +1,44 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_implementor = require("../implementor.cjs");
3
+ let _duplojs_lang_either = require("@duplojs/lang/either");
4
+ _duplojs_lang_either = require_runtime.__toESM(_duplojs_lang_either, 1);
5
+ //#region scripts/file/writeTextFile.ts
6
+ function handleNodeWriteTextFileError(error) {
7
+ if (typeof error === "object" && error !== null && "code" in error) {
8
+ if (error.code === "ENOENT") return _duplojs_lang_either.left("file-system-write-text-file-not-found", error);
9
+ else if (error.code === "EACCES" || error.code === "EPERM") return _duplojs_lang_either.left("file-system-write-text-file-permission-denied", error);
10
+ else if (error.code === "EISDIR") return _duplojs_lang_either.left("file-system-write-text-file-is-directory", error);
11
+ else if (error.code === "ENOTDIR") return _duplojs_lang_either.left("file-system-write-text-file-not-directory", error);
12
+ else if (error.code === "ENOSPC") return _duplojs_lang_either.left("file-system-write-text-file-no-space", error);
13
+ else if (error.code === "EROFS") return _duplojs_lang_either.left("file-system-write-text-file-read-only", error);
14
+ else if (error.code === "EINVAL") return _duplojs_lang_either.left("file-system-write-text-file-invalid-argument", error);
15
+ else if (error.code === "EMFILE" || error.code === "ENFILE") return _duplojs_lang_either.left("file-system-write-text-file-too-many-open-files", error);
16
+ else if (error.code === "EBUSY") return _duplojs_lang_either.left("file-system-write-text-file-busy", error);
17
+ }
18
+ return _duplojs_lang_either.left("file-system-write-text-file-error", error);
19
+ }
20
+ function handleDenoWriteTextFileError(error) {
21
+ if (error instanceof Deno.errors.NotFound) return _duplojs_lang_either.left("file-system-write-text-file-not-found", error);
22
+ if (error instanceof Deno.errors.PermissionDenied || error instanceof Deno.errors.NotCapable) return _duplojs_lang_either.left("file-system-write-text-file-permission-denied", error);
23
+ if (error instanceof Deno.errors.IsADirectory) return _duplojs_lang_either.left("file-system-write-text-file-is-directory", error);
24
+ if (error instanceof Deno.errors.NotADirectory) return _duplojs_lang_either.left("file-system-write-text-file-not-directory", error);
25
+ if (error instanceof Deno.errors.InvalidData) return _duplojs_lang_either.left("file-system-write-text-file-invalid-argument", error);
26
+ if (error instanceof Deno.errors.Busy) return _duplojs_lang_either.left("file-system-write-text-file-busy", error);
27
+ return _duplojs_lang_either.left("file-system-write-text-file-error", error);
28
+ }
29
+ const writeTextFileImplementation = require_implementor.implementFunction("writeTextFile", {
30
+ NODE: async (path, data) => {
31
+ return (await require_implementor.nodeFileSystem.value).writeFile(path, data, { encoding: "utf-8" }).then(() => _duplojs_lang_either.right("file-system-write-text-file")).catch(handleNodeWriteTextFileError);
32
+ },
33
+ DENO: (path, data) => Deno.writeTextFile(path, data).then(() => _duplojs_lang_either.right("file-system-write-text-file")).catch(handleDenoWriteTextFileError),
34
+ BUN: (path, data) => Bun.file(path).write(data).then(() => _duplojs_lang_either.right("file-system-write-text-file")).catch(handleNodeWriteTextFileError)
35
+ });
36
+ function writeTextFile(...args) {
37
+ if (args.length === 1) {
38
+ const [data] = args;
39
+ return (path) => writeTextFileImplementation(path, data);
40
+ }
41
+ return writeTextFileImplementation(...args);
42
+ }
43
+ //#endregion
44
+ exports.writeTextFile = writeTextFile;