@catbee/utils 0.0.8-rc.0 → 0.0.8-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +25 -1
  2. package/build/esm/config.d.ts +0 -1
  3. package/build/esm/config.js +6 -7
  4. package/build/esm/index.d.ts +0 -1
  5. package/build/esm/index.js +0 -1
  6. package/build/esm/servers/server.builder.d.ts +0 -1
  7. package/build/esm/servers/server.builder.js +99 -147
  8. package/build/esm/servers/server.d.ts +0 -1
  9. package/build/esm/servers/server.js +591 -876
  10. package/build/esm/types/api-response.d.ts +0 -1
  11. package/build/esm/types/api-response.js +0 -1
  12. package/build/esm/types/index.d.ts +0 -1
  13. package/build/esm/types/index.js +0 -1
  14. package/build/esm/types/server.d.ts +0 -1
  15. package/build/esm/types/server.js +0 -1
  16. package/build/esm/utils/array.utils.d.ts +0 -1
  17. package/build/esm/utils/array.utils.js +48 -86
  18. package/build/esm/utils/async.utils.d.ts +0 -1
  19. package/build/esm/utils/async.utils.js +247 -524
  20. package/build/esm/utils/cache.utils.d.ts +0 -1
  21. package/build/esm/utils/cache.utils.js +96 -301
  22. package/build/esm/utils/context-store.utils.d.ts +0 -1
  23. package/build/esm/utils/context-store.utils.js +62 -79
  24. package/build/esm/utils/crypto.utils.d.ts +0 -1
  25. package/build/esm/utils/crypto.utils.js +78 -175
  26. package/build/esm/utils/date.utils.d.ts +0 -1
  27. package/build/esm/utils/date.utils.js +47 -53
  28. package/build/esm/utils/decorators.utils.d.ts +201 -5
  29. package/build/esm/utils/decorators.utils.js +632 -285
  30. package/build/esm/utils/dir.utils.d.ts +0 -1
  31. package/build/esm/utils/dir.utils.js +264 -786
  32. package/build/esm/utils/env.utils.d.ts +0 -1
  33. package/build/esm/utils/env.utils.js +180 -271
  34. package/build/esm/utils/exception.utils.d.ts +0 -1
  35. package/build/esm/utils/exception.utils.js +112 -289
  36. package/build/esm/utils/fs.utils.d.ts +0 -1
  37. package/build/esm/utils/fs.utils.js +169 -401
  38. package/build/esm/utils/http-status-codes.d.ts +0 -1
  39. package/build/esm/utils/http-status-codes.js +0 -1
  40. package/build/esm/utils/id.utils.d.ts +0 -1
  41. package/build/esm/utils/id.utils.js +5 -9
  42. package/build/esm/utils/logger.utils.d.ts +0 -1
  43. package/build/esm/utils/logger.utils.js +34 -71
  44. package/build/esm/utils/middleware.utils.d.ts +0 -1
  45. package/build/esm/utils/middleware.utils.js +65 -155
  46. package/build/esm/utils/obj.utils.d.ts +0 -1
  47. package/build/esm/utils/obj.utils.js +69 -176
  48. package/build/esm/utils/performance.utils.d.ts +0 -1
  49. package/build/esm/utils/performance.utils.js +92 -195
  50. package/build/esm/utils/request.utils.d.ts +0 -1
  51. package/build/esm/utils/request.utils.js +41 -74
  52. package/build/esm/utils/response.utils.d.ts +0 -1
  53. package/build/esm/utils/response.utils.js +84 -107
  54. package/build/esm/utils/stream.utils.d.ts +0 -1
  55. package/build/esm/utils/stream.utils.js +38 -113
  56. package/build/esm/utils/string.utils.d.ts +0 -1
  57. package/build/esm/utils/string.utils.js +6 -11
  58. package/build/esm/utils/type.utils.d.ts +0 -1
  59. package/build/esm/utils/type.utils.js +8 -12
  60. package/build/esm/utils/url.utils.d.ts +0 -1
  61. package/build/esm/utils/url.utils.js +49 -127
  62. package/build/esm/utils/validate.utils.d.ts +0 -1
  63. package/build/esm/utils/validate.utils.js +23 -40
  64. package/package.json +3 -33
  65. package/build/esm/config.js.map +0 -1
  66. package/build/esm/index.js.map +0 -1
  67. package/build/esm/servers/server.builder.js.map +0 -1
  68. package/build/esm/servers/server.js.map +0 -1
  69. package/build/esm/types/api-response.js.map +0 -1
  70. package/build/esm/types/index.js.map +0 -1
  71. package/build/esm/types/server.js.map +0 -1
  72. package/build/esm/utils/array.utils.js.map +0 -1
  73. package/build/esm/utils/async.utils.js.map +0 -1
  74. package/build/esm/utils/cache.utils.js.map +0 -1
  75. package/build/esm/utils/context-store.utils.js.map +0 -1
  76. package/build/esm/utils/crypto.utils.js.map +0 -1
  77. package/build/esm/utils/date.utils.js.map +0 -1
  78. package/build/esm/utils/decorators.utils.js.map +0 -1
  79. package/build/esm/utils/dir.utils.js.map +0 -1
  80. package/build/esm/utils/env.utils.js.map +0 -1
  81. package/build/esm/utils/exception.utils.js.map +0 -1
  82. package/build/esm/utils/fs.utils.js.map +0 -1
  83. package/build/esm/utils/http-status-codes.js.map +0 -1
  84. package/build/esm/utils/id.utils.js.map +0 -1
  85. package/build/esm/utils/logger.utils.js.map +0 -1
  86. package/build/esm/utils/middleware.utils.js.map +0 -1
  87. package/build/esm/utils/obj.utils.js.map +0 -1
  88. package/build/esm/utils/performance.utils.js.map +0 -1
  89. package/build/esm/utils/request.utils.js.map +0 -1
  90. package/build/esm/utils/response.utils.js.map +0 -1
  91. package/build/esm/utils/stream.utils.js.map +0 -1
  92. package/build/esm/utils/string.utils.js.map +0 -1
  93. package/build/esm/utils/type.utils.js.map +0 -1
  94. package/build/esm/utils/url.utils.js.map +0 -1
  95. package/build/esm/utils/validate.utils.js.map +0 -1
  96. package/build/esnext/config.d.ts +0 -122
  97. package/build/esnext/config.js +0 -133
  98. package/build/esnext/config.js.map +0 -1
  99. package/build/esnext/index.d.ts +0 -27
  100. package/build/esnext/index.js +0 -50
  101. package/build/esnext/index.js.map +0 -1
  102. package/build/esnext/servers/server.builder.d.ts +0 -508
  103. package/build/esnext/servers/server.builder.js +0 -657
  104. package/build/esnext/servers/server.builder.js.map +0 -1
  105. package/build/esnext/servers/server.d.ts +0 -256
  106. package/build/esnext/servers/server.js +0 -955
  107. package/build/esnext/servers/server.js.map +0 -1
  108. package/build/esnext/types/api-response.d.ts +0 -152
  109. package/build/esnext/types/api-response.js +0 -34
  110. package/build/esnext/types/api-response.js.map +0 -1
  111. package/build/esnext/types/index.d.ts +0 -125
  112. package/build/esnext/types/index.js +0 -25
  113. package/build/esnext/types/index.js.map +0 -1
  114. package/build/esnext/types/server.d.ts +0 -268
  115. package/build/esnext/types/server.js +0 -25
  116. package/build/esnext/types/server.js.map +0 -1
  117. package/build/esnext/utils/array.utils.d.ts +0 -168
  118. package/build/esnext/utils/array.utils.js +0 -345
  119. package/build/esnext/utils/array.utils.js.map +0 -1
  120. package/build/esnext/utils/async.utils.d.ts +0 -265
  121. package/build/esnext/utils/async.utils.js +0 -620
  122. package/build/esnext/utils/async.utils.js.map +0 -1
  123. package/build/esnext/utils/cache.utils.d.ts +0 -153
  124. package/build/esnext/utils/cache.utils.js +0 -293
  125. package/build/esnext/utils/cache.utils.js.map +0 -1
  126. package/build/esnext/utils/context-store.utils.d.ts +0 -189
  127. package/build/esnext/utils/context-store.utils.js +0 -289
  128. package/build/esnext/utils/context-store.utils.js.map +0 -1
  129. package/build/esnext/utils/crypto.utils.d.ts +0 -160
  130. package/build/esnext/utils/crypto.utils.js +0 -276
  131. package/build/esnext/utils/crypto.utils.js.map +0 -1
  132. package/build/esnext/utils/date.utils.d.ts +0 -159
  133. package/build/esnext/utils/date.utils.js +0 -384
  134. package/build/esnext/utils/date.utils.js.map +0 -1
  135. package/build/esnext/utils/decorators.utils.d.ts +0 -315
  136. package/build/esnext/utils/decorators.utils.js +0 -504
  137. package/build/esnext/utils/decorators.utils.js.map +0 -1
  138. package/build/esnext/utils/dir.utils.d.ts +0 -196
  139. package/build/esnext/utils/dir.utils.js +0 -477
  140. package/build/esnext/utils/dir.utils.js.map +0 -1
  141. package/build/esnext/utils/env.utils.d.ts +0 -377
  142. package/build/esnext/utils/env.utils.js +0 -785
  143. package/build/esnext/utils/env.utils.js.map +0 -1
  144. package/build/esnext/utils/exception.utils.d.ts +0 -230
  145. package/build/esnext/utils/exception.utils.js +0 -381
  146. package/build/esnext/utils/exception.utils.js.map +0 -1
  147. package/build/esnext/utils/fs.utils.d.ts +0 -164
  148. package/build/esnext/utils/fs.utils.js +0 -349
  149. package/build/esnext/utils/fs.utils.js.map +0 -1
  150. package/build/esnext/utils/http-status-codes.d.ts +0 -266
  151. package/build/esnext/utils/http-status-codes.js +0 -295
  152. package/build/esnext/utils/http-status-codes.js.map +0 -1
  153. package/build/esnext/utils/id.utils.d.ts +0 -36
  154. package/build/esnext/utils/id.utils.js +0 -84
  155. package/build/esnext/utils/id.utils.js.map +0 -1
  156. package/build/esnext/utils/logger.utils.d.ts +0 -160
  157. package/build/esnext/utils/logger.utils.js +0 -300
  158. package/build/esnext/utils/logger.utils.js.map +0 -1
  159. package/build/esnext/utils/middleware.utils.d.ts +0 -100
  160. package/build/esnext/utils/middleware.utils.js +0 -236
  161. package/build/esnext/utils/middleware.utils.js.map +0 -1
  162. package/build/esnext/utils/obj.utils.d.ts +0 -124
  163. package/build/esnext/utils/obj.utils.js +0 -413
  164. package/build/esnext/utils/obj.utils.js.map +0 -1
  165. package/build/esnext/utils/performance.utils.d.ts +0 -136
  166. package/build/esnext/utils/performance.utils.js +0 -271
  167. package/build/esnext/utils/performance.utils.js.map +0 -1
  168. package/build/esnext/utils/request.utils.d.ts +0 -86
  169. package/build/esnext/utils/request.utils.js +0 -186
  170. package/build/esnext/utils/request.utils.js.map +0 -1
  171. package/build/esnext/utils/response.utils.d.ts +0 -163
  172. package/build/esnext/utils/response.utils.js +0 -247
  173. package/build/esnext/utils/response.utils.js.map +0 -1
  174. package/build/esnext/utils/stream.utils.d.ts +0 -88
  175. package/build/esnext/utils/stream.utils.js +0 -210
  176. package/build/esnext/utils/stream.utils.js.map +0 -1
  177. package/build/esnext/utils/string.utils.d.ts +0 -93
  178. package/build/esnext/utils/string.utils.js +0 -165
  179. package/build/esnext/utils/string.utils.js.map +0 -1
  180. package/build/esnext/utils/type.utils.d.ts +0 -90
  181. package/build/esnext/utils/type.utils.js +0 -187
  182. package/build/esnext/utils/type.utils.js.map +0 -1
  183. package/build/esnext/utils/url.utils.d.ts +0 -141
  184. package/build/esnext/utils/url.utils.js +0 -304
  185. package/build/esnext/utils/url.utils.js.map +0 -1
  186. package/build/esnext/utils/validate.utils.d.ts +0 -177
  187. package/build/esnext/utils/validate.utils.js +0 -320
  188. package/build/esnext/utils/validate.utils.js.map +0 -1
  189. package/build/src/config.d.ts +0 -122
  190. package/build/src/config.js +0 -138
  191. package/build/src/config.js.map +0 -1
  192. package/build/src/index.d.ts +0 -27
  193. package/build/src/index.js +0 -69
  194. package/build/src/index.js.map +0 -1
  195. package/build/src/servers/server.builder.d.ts +0 -508
  196. package/build/src/servers/server.builder.js +0 -661
  197. package/build/src/servers/server.builder.js.map +0 -1
  198. package/build/src/servers/server.d.ts +0 -256
  199. package/build/src/servers/server.js +0 -962
  200. package/build/src/servers/server.js.map +0 -1
  201. package/build/src/types/api-response.d.ts +0 -152
  202. package/build/src/types/api-response.js +0 -37
  203. package/build/src/types/api-response.js.map +0 -1
  204. package/build/src/types/index.d.ts +0 -125
  205. package/build/src/types/index.js +0 -26
  206. package/build/src/types/index.js.map +0 -1
  207. package/build/src/types/server.d.ts +0 -268
  208. package/build/src/types/server.js +0 -26
  209. package/build/src/types/server.js.map +0 -1
  210. package/build/src/utils/array.utils.d.ts +0 -168
  211. package/build/src/utils/array.utils.js +0 -364
  212. package/build/src/utils/array.utils.js.map +0 -1
  213. package/build/src/utils/async.utils.d.ts +0 -265
  214. package/build/src/utils/async.utils.js +0 -641
  215. package/build/src/utils/async.utils.js.map +0 -1
  216. package/build/src/utils/cache.utils.d.ts +0 -153
  217. package/build/src/utils/cache.utils.js +0 -297
  218. package/build/src/utils/cache.utils.js.map +0 -1
  219. package/build/src/utils/context-store.utils.d.ts +0 -189
  220. package/build/src/utils/context-store.utils.js +0 -296
  221. package/build/src/utils/context-store.utils.js.map +0 -1
  222. package/build/src/utils/crypto.utils.d.ts +0 -160
  223. package/build/src/utils/crypto.utils.js +0 -293
  224. package/build/src/utils/crypto.utils.js.map +0 -1
  225. package/build/src/utils/date.utils.d.ts +0 -159
  226. package/build/src/utils/date.utils.js +0 -396
  227. package/build/src/utils/date.utils.js.map +0 -1
  228. package/build/src/utils/decorators.utils.d.ts +0 -315
  229. package/build/src/utils/decorators.utils.js +0 -516
  230. package/build/src/utils/decorators.utils.js.map +0 -1
  231. package/build/src/utils/dir.utils.d.ts +0 -196
  232. package/build/src/utils/dir.utils.js +0 -501
  233. package/build/src/utils/dir.utils.js.map +0 -1
  234. package/build/src/utils/env.utils.d.ts +0 -377
  235. package/build/src/utils/env.utils.js +0 -789
  236. package/build/src/utils/env.utils.js.map +0 -1
  237. package/build/src/utils/exception.utils.d.ts +0 -230
  238. package/build/src/utils/exception.utils.js +0 -407
  239. package/build/src/utils/exception.utils.js.map +0 -1
  240. package/build/src/utils/fs.utils.d.ts +0 -164
  241. package/build/src/utils/fs.utils.js +0 -372
  242. package/build/src/utils/fs.utils.js.map +0 -1
  243. package/build/src/utils/http-status-codes.d.ts +0 -266
  244. package/build/src/utils/http-status-codes.js +0 -298
  245. package/build/src/utils/http-status-codes.js.map +0 -1
  246. package/build/src/utils/id.utils.d.ts +0 -36
  247. package/build/src/utils/id.utils.js +0 -91
  248. package/build/src/utils/id.utils.js.map +0 -1
  249. package/build/src/utils/logger.utils.d.ts +0 -160
  250. package/build/src/utils/logger.utils.js +0 -346
  251. package/build/src/utils/logger.utils.js.map +0 -1
  252. package/build/src/utils/middleware.utils.d.ts +0 -100
  253. package/build/src/utils/middleware.utils.js +0 -244
  254. package/build/src/utils/middleware.utils.js.map +0 -1
  255. package/build/src/utils/obj.utils.d.ts +0 -124
  256. package/build/src/utils/obj.utils.js +0 -429
  257. package/build/src/utils/obj.utils.js.map +0 -1
  258. package/build/src/utils/performance.utils.d.ts +0 -136
  259. package/build/src/utils/performance.utils.js +0 -278
  260. package/build/src/utils/performance.utils.js.map +0 -1
  261. package/build/src/utils/request.utils.d.ts +0 -86
  262. package/build/src/utils/request.utils.js +0 -195
  263. package/build/src/utils/request.utils.js.map +0 -1
  264. package/build/src/utils/response.utils.d.ts +0 -163
  265. package/build/src/utils/response.utils.js +0 -260
  266. package/build/src/utils/response.utils.js.map +0 -1
  267. package/build/src/utils/stream.utils.d.ts +0 -88
  268. package/build/src/utils/stream.utils.js +0 -218
  269. package/build/src/utils/stream.utils.js.map +0 -1
  270. package/build/src/utils/string.utils.d.ts +0 -93
  271. package/build/src/utils/string.utils.js +0 -179
  272. package/build/src/utils/string.utils.js.map +0 -1
  273. package/build/src/utils/type.utils.d.ts +0 -90
  274. package/build/src/utils/type.utils.js +0 -196
  275. package/build/src/utils/type.utils.js.map +0 -1
  276. package/build/src/utils/url.utils.d.ts +0 -141
  277. package/build/src/utils/url.utils.js +0 -317
  278. package/build/src/utils/url.utils.js.map +0 -1
  279. package/build/src/utils/validate.utils.d.ts +0 -177
  280. package/build/src/utils/validate.utils.js +0 -345
  281. package/build/src/utils/validate.utils.js.map +0 -1
@@ -21,42 +21,6 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  * SOFTWARE.
23
23
  */
24
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
25
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
26
- return new (P || (P = Promise))(function (resolve, reject) {
27
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
28
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
29
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
30
- step((generator = generator.apply(thisArg, _arguments || [])).next());
31
- });
32
- };
33
- var __generator = (this && this.__generator) || function (thisArg, body) {
34
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
35
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
36
- function verb(n) { return function (v) { return step([n, v]); }; }
37
- function step(op) {
38
- if (f) throw new TypeError("Generator is already executing.");
39
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
40
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
41
- if (y = 0, t) op = [op[0] & 2, t.value];
42
- switch (op[0]) {
43
- case 0: case 1: t = op; break;
44
- case 4: _.label++; return { value: op[1], done: false };
45
- case 5: _.label++; y = op[1]; op = [0]; continue;
46
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
47
- default:
48
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
49
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
50
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
51
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
52
- if (t[2]) _.ops.pop();
53
- _.trys.pop(); continue;
54
- }
55
- op = body.call(thisArg, _);
56
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
57
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
58
- }
59
- };
60
24
  import fs from 'fs/promises';
61
25
  import { createReadStream, createWriteStream } from 'fs';
62
26
  import { tmpdir } from 'os';
@@ -69,24 +33,14 @@ import { randomUUID } from 'crypto';
69
33
  * @param {string} path - The file or directory path to check.
70
34
  * @returns {Promise<boolean>} Resolves to `true` if the path exists, `false` otherwise.
71
35
  */
72
- export function fileExists(path) {
73
- return __awaiter(this, void 0, void 0, function () {
74
- var _a;
75
- return __generator(this, function (_b) {
76
- switch (_b.label) {
77
- case 0:
78
- _b.trys.push([0, 2, , 3]);
79
- return [4 /*yield*/, fs.access(path)];
80
- case 1:
81
- _b.sent();
82
- return [2 /*return*/, true];
83
- case 2:
84
- _a = _b.sent();
85
- return [2 /*return*/, false];
86
- case 3: return [2 /*return*/];
87
- }
88
- });
89
- });
36
+ export async function fileExists(path) {
37
+ try {
38
+ await fs.access(path);
39
+ return true;
40
+ }
41
+ catch {
42
+ return false;
43
+ }
90
44
  }
91
45
  /**
92
46
  * Reads and parses a JSON file from the specified path.
@@ -95,24 +49,14 @@ export function fileExists(path) {
95
49
  * @param {string} path - The path to the JSON file.
96
50
  * @returns {Promise<T | null>} The parsed object, or `null` if reading or parsing fails.
97
51
  */
98
- export function readJsonFile(path) {
99
- return __awaiter(this, void 0, void 0, function () {
100
- var data, _a;
101
- return __generator(this, function (_b) {
102
- switch (_b.label) {
103
- case 0:
104
- _b.trys.push([0, 2, , 3]);
105
- return [4 /*yield*/, fs.readFile(path, 'utf-8')];
106
- case 1:
107
- data = _b.sent();
108
- return [2 /*return*/, JSON.parse(data)];
109
- case 2:
110
- _a = _b.sent();
111
- return [2 /*return*/, null];
112
- case 3: return [2 /*return*/];
113
- }
114
- });
115
- });
52
+ export async function readJsonFile(path) {
53
+ try {
54
+ const data = await fs.readFile(path, 'utf-8');
55
+ return JSON.parse(data);
56
+ }
57
+ catch {
58
+ return null;
59
+ }
116
60
  }
117
61
  /**
118
62
  * Writes a JavaScript object to a file as formatted JSON.
@@ -122,21 +66,9 @@ export function readJsonFile(path) {
122
66
  * @param {number} [space=2] - Number of spaces for JSON formatting.
123
67
  * @returns {Promise<void>} Resolves when writing is complete.
124
68
  */
125
- export function writeJsonFile(path_1, data_1) {
126
- return __awaiter(this, arguments, void 0, function (path, data, space) {
127
- var json;
128
- if (space === void 0) { space = 2; }
129
- return __generator(this, function (_a) {
130
- switch (_a.label) {
131
- case 0:
132
- json = JSON.stringify(data, null, space);
133
- return [4 /*yield*/, fs.writeFile(path, json, 'utf-8')];
134
- case 1:
135
- _a.sent();
136
- return [2 /*return*/];
137
- }
138
- });
139
- });
69
+ export async function writeJsonFile(path, data, space = 2) {
70
+ const json = JSON.stringify(data, null, space);
71
+ await fs.writeFile(path, json, 'utf-8');
140
72
  }
141
73
  /**
142
74
  * Deletes a file if it exists.
@@ -144,26 +76,16 @@ export function writeJsonFile(path_1, data_1) {
144
76
  * @param {string} path - The file path to delete.
145
77
  * @returns {Promise<boolean>} Resolves to `true` if the file was deleted or didn't exist, `false` if deletion failed.
146
78
  */
147
- export function deleteFileIfExists(path) {
148
- return __awaiter(this, void 0, void 0, function () {
149
- var err_1;
150
- return __generator(this, function (_a) {
151
- switch (_a.label) {
152
- case 0:
153
- _a.trys.push([0, 2, , 3]);
154
- return [4 /*yield*/, fs.unlink(path)];
155
- case 1:
156
- _a.sent();
157
- return [2 /*return*/, true];
158
- case 2:
159
- err_1 = _a.sent();
160
- if (err_1.code === 'ENOENT')
161
- return [2 /*return*/, true];
162
- return [2 /*return*/, false];
163
- case 3: return [2 /*return*/];
164
- }
165
- });
166
- });
79
+ export async function deleteFileIfExists(path) {
80
+ try {
81
+ await fs.unlink(path);
82
+ return true;
83
+ }
84
+ catch (err) {
85
+ if (err.code === 'ENOENT')
86
+ return true;
87
+ return false;
88
+ }
167
89
  }
168
90
  /**
169
91
  * Reads a text file from the specified path.
@@ -172,23 +94,13 @@ export function deleteFileIfExists(path) {
172
94
  * @param {BufferEncoding} [encoding="utf-8"] - The encoding to use.
173
95
  * @returns {Promise<string | null>} The file contents, or `null` if reading fails.
174
96
  */
175
- export function readTextFile(path_1) {
176
- return __awaiter(this, arguments, void 0, function (path, encoding) {
177
- var _a;
178
- if (encoding === void 0) { encoding = 'utf-8'; }
179
- return __generator(this, function (_b) {
180
- switch (_b.label) {
181
- case 0:
182
- _b.trys.push([0, 2, , 3]);
183
- return [4 /*yield*/, fs.readFile(path, encoding)];
184
- case 1: return [2 /*return*/, _b.sent()];
185
- case 2:
186
- _a = _b.sent();
187
- return [2 /*return*/, null];
188
- case 3: return [2 /*return*/];
189
- }
190
- });
191
- });
97
+ export async function readTextFile(path, encoding = 'utf-8') {
98
+ try {
99
+ return await fs.readFile(path, encoding);
100
+ }
101
+ catch {
102
+ return null;
103
+ }
192
104
  }
193
105
  /**
194
106
  * Writes text content to a file.
@@ -198,25 +110,14 @@ export function readTextFile(path_1) {
198
110
  * @param {BufferEncoding} [encoding="utf-8"] - The encoding to use.
199
111
  * @returns {Promise<boolean>} Resolves to `true` if successful, `false` otherwise.
200
112
  */
201
- export function writeTextFile(path_1, content_1) {
202
- return __awaiter(this, arguments, void 0, function (path, content, encoding) {
203
- var _a;
204
- if (encoding === void 0) { encoding = 'utf-8'; }
205
- return __generator(this, function (_b) {
206
- switch (_b.label) {
207
- case 0:
208
- _b.trys.push([0, 2, , 3]);
209
- return [4 /*yield*/, fs.writeFile(path, content, encoding)];
210
- case 1:
211
- _b.sent();
212
- return [2 /*return*/, true];
213
- case 2:
214
- _a = _b.sent();
215
- return [2 /*return*/, false];
216
- case 3: return [2 /*return*/];
217
- }
218
- });
219
- });
113
+ export async function writeTextFile(path, content, encoding = 'utf-8') {
114
+ try {
115
+ await fs.writeFile(path, content, encoding);
116
+ return true;
117
+ }
118
+ catch {
119
+ return false;
120
+ }
220
121
  }
221
122
  /**
222
123
  * Appends text content to a file.
@@ -226,25 +127,14 @@ export function writeTextFile(path_1, content_1) {
226
127
  * @param {BufferEncoding} [encoding="utf-8"] - The encoding to use.
227
128
  * @returns {Promise<boolean>} Resolves to `true` if successful, `false` otherwise.
228
129
  */
229
- export function appendTextFile(path_1, content_1) {
230
- return __awaiter(this, arguments, void 0, function (path, content, encoding) {
231
- var _a;
232
- if (encoding === void 0) { encoding = 'utf-8'; }
233
- return __generator(this, function (_b) {
234
- switch (_b.label) {
235
- case 0:
236
- _b.trys.push([0, 2, , 3]);
237
- return [4 /*yield*/, fs.appendFile(path, content, encoding)];
238
- case 1:
239
- _b.sent();
240
- return [2 /*return*/, true];
241
- case 2:
242
- _a = _b.sent();
243
- return [2 /*return*/, false];
244
- case 3: return [2 /*return*/];
245
- }
246
- });
247
- });
130
+ export async function appendTextFile(path, content, encoding = 'utf-8') {
131
+ try {
132
+ await fs.appendFile(path, content, encoding);
133
+ return true;
134
+ }
135
+ catch {
136
+ return false;
137
+ }
248
138
  }
249
139
  /**
250
140
  * Copies a file from source to destination.
@@ -254,26 +144,15 @@ export function appendTextFile(path_1, content_1) {
254
144
  * @param {boolean} [overwrite=false] - Whether to overwrite if destination exists.
255
145
  * @returns {Promise<boolean>} Resolves to `true` if successful, `false` otherwise.
256
146
  */
257
- export function copyFile(source_1, destination_1) {
258
- return __awaiter(this, arguments, void 0, function (source, destination, overwrite) {
259
- var flags, _a;
260
- if (overwrite === void 0) { overwrite = false; }
261
- return __generator(this, function (_b) {
262
- switch (_b.label) {
263
- case 0:
264
- _b.trys.push([0, 2, , 3]);
265
- flags = overwrite ? 0 : fs.constants.COPYFILE_EXCL;
266
- return [4 /*yield*/, fs.copyFile(source, destination, flags)];
267
- case 1:
268
- _b.sent();
269
- return [2 /*return*/, true];
270
- case 2:
271
- _a = _b.sent();
272
- return [2 /*return*/, false];
273
- case 3: return [2 /*return*/];
274
- }
275
- });
276
- });
147
+ export async function copyFile(source, destination, overwrite = false) {
148
+ try {
149
+ const flags = overwrite ? 0 : fs.constants.COPYFILE_EXCL;
150
+ await fs.copyFile(source, destination, flags);
151
+ return true;
152
+ }
153
+ catch {
154
+ return false;
155
+ }
277
156
  }
278
157
  /**
279
158
  * Renames/moves a file.
@@ -282,37 +161,22 @@ export function copyFile(source_1, destination_1) {
282
161
  * @param {string} newPath - New file path.
283
162
  * @returns {Promise<boolean>} Resolves to `true` if successful, `false` otherwise.
284
163
  */
285
- export function moveFile(oldPath, newPath) {
286
- return __awaiter(this, void 0, void 0, function () {
287
- var _a, _b;
288
- return __generator(this, function (_c) {
289
- switch (_c.label) {
290
- case 0:
291
- _c.trys.push([0, 2, , 8]);
292
- return [4 /*yield*/, fs.rename(oldPath, newPath)];
293
- case 1:
294
- _c.sent();
295
- return [2 /*return*/, true];
296
- case 2:
297
- _a = _c.sent();
298
- _c.label = 3;
299
- case 3:
300
- _c.trys.push([3, 6, , 7]);
301
- return [4 /*yield*/, fs.copyFile(oldPath, newPath)];
302
- case 4:
303
- _c.sent();
304
- return [4 /*yield*/, fs.unlink(oldPath)];
305
- case 5:
306
- _c.sent();
307
- return [2 /*return*/, true];
308
- case 6:
309
- _b = _c.sent();
310
- return [2 /*return*/, false];
311
- case 7: return [3 /*break*/, 8];
312
- case 8: return [2 /*return*/];
313
- }
314
- });
315
- });
164
+ export async function moveFile(oldPath, newPath) {
165
+ try {
166
+ await fs.rename(oldPath, newPath);
167
+ return true;
168
+ }
169
+ catch {
170
+ // If rename fails (e.g., across devices), try copy+delete
171
+ try {
172
+ await fs.copyFile(oldPath, newPath);
173
+ await fs.unlink(oldPath);
174
+ return true;
175
+ }
176
+ catch {
177
+ return false;
178
+ }
179
+ }
316
180
  }
317
181
  /**
318
182
  * Gets file stats if the file exists.
@@ -320,22 +184,13 @@ export function moveFile(oldPath, newPath) {
320
184
  * @param {string} path - Path to the file.
321
185
  * @returns {Promise<fs.Stats | null>} File stats object or null if file doesn't exist.
322
186
  */
323
- export function getFileStats(path) {
324
- return __awaiter(this, void 0, void 0, function () {
325
- var _a;
326
- return __generator(this, function (_b) {
327
- switch (_b.label) {
328
- case 0:
329
- _b.trys.push([0, 2, , 3]);
330
- return [4 /*yield*/, fs.stat(path)];
331
- case 1: return [2 /*return*/, _b.sent()];
332
- case 2:
333
- _a = _b.sent();
334
- return [2 /*return*/, null];
335
- case 3: return [2 /*return*/];
336
- }
337
- });
338
- });
187
+ export async function getFileStats(path) {
188
+ try {
189
+ return await fs.stat(path);
190
+ }
191
+ catch {
192
+ return null;
193
+ }
339
194
  }
340
195
  /**
341
196
  * Creates a temporary file with optional content.
@@ -347,29 +202,17 @@ export function getFileStats(path) {
347
202
  * @param {string | Buffer} [options.content] - Optional content to write to the file.
348
203
  * @returns {Promise<string>} Path to the created temporary file.
349
204
  */
350
- export function createTempFile() {
351
- return __awaiter(this, arguments, void 0, function (_a) {
352
- var ext, filename, filepath;
353
- var _b = _a === void 0 ? {} : _a, _c = _b.prefix, prefix = _c === void 0 ? 'tmp-' : _c, _d = _b.extension, extension = _d === void 0 ? '' : _d, _e = _b.dir, dir = _e === void 0 ? tmpdir() : _e, content = _b.content;
354
- return __generator(this, function (_f) {
355
- switch (_f.label) {
356
- case 0:
357
- ext = extension ? (extension.startsWith('.') ? extension : ".".concat(extension)) : '';
358
- filename = "".concat(prefix).concat(randomUUID()).concat(ext);
359
- filepath = path.join(dir, filename);
360
- if (!content) return [3 /*break*/, 2];
361
- return [4 /*yield*/, fs.writeFile(filepath, content)];
362
- case 1:
363
- _f.sent();
364
- return [3 /*break*/, 4];
365
- case 2: return [4 /*yield*/, fs.writeFile(filepath, '')];
366
- case 3:
367
- _f.sent();
368
- _f.label = 4;
369
- case 4: return [2 /*return*/, filepath];
370
- }
371
- });
372
- });
205
+ export async function createTempFile({ prefix = 'tmp-', extension = '', dir = tmpdir(), content } = {}) {
206
+ const ext = extension ? (extension.startsWith('.') ? extension : `.${extension}`) : '';
207
+ const filename = `${prefix}${randomUUID()}${ext}`;
208
+ const filepath = path.join(dir, filename);
209
+ if (content) {
210
+ await fs.writeFile(filepath, content);
211
+ }
212
+ else {
213
+ await fs.writeFile(filepath, '');
214
+ }
215
+ return filepath;
373
216
  }
374
217
  /**
375
218
  * Streams a file from source to destination.
@@ -380,31 +223,18 @@ export function createTempFile() {
380
223
  * @returns {Promise<void>} Resolves when streaming completes.
381
224
  * @throws {Error} If streaming fails.
382
225
  */
383
- export function streamFile(source, destination) {
384
- return __awaiter(this, void 0, void 0, function () {
385
- var readStream, writeStream, error_1;
386
- return __generator(this, function (_a) {
387
- switch (_a.label) {
388
- case 0:
389
- readStream = createReadStream(source);
390
- writeStream = createWriteStream(destination);
391
- _a.label = 1;
392
- case 1:
393
- _a.trys.push([1, 3, , 4]);
394
- return [4 /*yield*/, pipeline(readStream, writeStream)];
395
- case 2:
396
- _a.sent();
397
- return [3 /*break*/, 4];
398
- case 3:
399
- error_1 = _a.sent();
400
- // Ensure both streams are closed in case of error
401
- readStream.destroy();
402
- writeStream.destroy();
403
- throw error_1;
404
- case 4: return [2 /*return*/];
405
- }
406
- });
407
- });
226
+ export async function streamFile(source, destination) {
227
+ const readStream = createReadStream(source);
228
+ const writeStream = createWriteStream(destination);
229
+ try {
230
+ await pipeline(readStream, writeStream);
231
+ }
232
+ catch (error) {
233
+ // Ensure both streams are closed in case of error
234
+ readStream.destroy();
235
+ writeStream.destroy();
236
+ throw error;
237
+ }
408
238
  }
409
239
  /**
410
240
  * Reads a directory and returns file names.
@@ -416,26 +246,16 @@ export function streamFile(source, destination) {
416
246
  * @returns {Promise<string[]>} Array of file names or paths.
417
247
  * @throws {Error} If directory cannot be read.
418
248
  */
419
- export function readDirectory(dirPath_1) {
420
- return __awaiter(this, arguments, void 0, function (dirPath, options) {
421
- var files, result;
422
- if (options === void 0) { options = {}; }
423
- return __generator(this, function (_a) {
424
- switch (_a.label) {
425
- case 0: return [4 /*yield*/, fs.readdir(dirPath)];
426
- case 1:
427
- files = _a.sent();
428
- result = files;
429
- if (options.filter) {
430
- result = result.filter(function (file) { return options.filter.test(file); });
431
- }
432
- if (options.fullPaths) {
433
- result = result.map(function (file) { return path.join(dirPath, file); });
434
- }
435
- return [2 /*return*/, result];
436
- }
437
- });
438
- });
249
+ export async function readDirectory(dirPath, options = {}) {
250
+ const files = await fs.readdir(dirPath);
251
+ let result = files;
252
+ if (options.filter) {
253
+ result = result.filter(file => options.filter.test(file));
254
+ }
255
+ if (options.fullPaths) {
256
+ result = result.map(file => path.join(dirPath, file));
257
+ }
258
+ return result;
439
259
  }
440
260
  /**
441
261
  * Creates a directory if it doesn't exist.
@@ -444,26 +264,15 @@ export function readDirectory(dirPath_1) {
444
264
  * @param {boolean} [recursive=true] - Whether to create parent directories.
445
265
  * @returns {Promise<boolean>} Resolves to `true` if successful, `false` otherwise.
446
266
  */
447
- export function createDirectory(dirPath_1) {
448
- return __awaiter(this, arguments, void 0, function (dirPath, recursive) {
449
- var err_2;
450
- if (recursive === void 0) { recursive = true; }
451
- return __generator(this, function (_a) {
452
- switch (_a.label) {
453
- case 0:
454
- _a.trys.push([0, 2, , 3]);
455
- return [4 /*yield*/, fs.mkdir(dirPath, { recursive: recursive })];
456
- case 1:
457
- _a.sent();
458
- return [2 /*return*/, true];
459
- case 2:
460
- err_2 = _a.sent();
461
- // Consider it success if directory already exists
462
- return [2 /*return*/, err_2.code === 'EEXIST'];
463
- case 3: return [2 /*return*/];
464
- }
465
- });
466
- });
267
+ export async function createDirectory(dirPath, recursive = true) {
268
+ try {
269
+ await fs.mkdir(dirPath, { recursive });
270
+ return true;
271
+ }
272
+ catch (err) {
273
+ // Consider it success if directory already exists
274
+ return err.code === 'EEXIST';
275
+ }
467
276
  }
468
277
  /**
469
278
  * Safely reads and parses a JSON file with error details.
@@ -472,37 +281,26 @@ export function createDirectory(dirPath_1) {
472
281
  * @param {string} path - The path to the JSON file.
473
282
  * @returns {Promise<{ data: T | null; error: Error | null }>} Object with data and error properties.
474
283
  */
475
- export function safeReadJsonFile(path) {
476
- return __awaiter(this, void 0, void 0, function () {
477
- var content, data, error_2;
478
- return __generator(this, function (_a) {
479
- switch (_a.label) {
480
- case 0:
481
- _a.trys.push([0, 2, , 3]);
482
- return [4 /*yield*/, fs.readFile(path, 'utf-8')];
483
- case 1:
484
- content = _a.sent();
485
- try {
486
- data = JSON.parse(content);
487
- return [2 /*return*/, { data: data, error: null }];
488
- }
489
- catch (error) {
490
- return [2 /*return*/, {
491
- data: null,
492
- error: new Error("Invalid JSON in file ".concat(path, ": ").concat(error.message))
493
- }];
494
- }
495
- return [3 /*break*/, 3];
496
- case 2:
497
- error_2 = _a.sent();
498
- return [2 /*return*/, {
499
- data: null,
500
- error: new Error("Failed to read file ".concat(path, ": ").concat(error_2.message))
501
- }];
502
- case 3: return [2 /*return*/];
503
- }
504
- });
505
- });
284
+ export async function safeReadJsonFile(path) {
285
+ try {
286
+ const content = await fs.readFile(path, 'utf-8');
287
+ try {
288
+ const data = JSON.parse(content);
289
+ return { data, error: null };
290
+ }
291
+ catch (error) {
292
+ return {
293
+ data: null,
294
+ error: new Error(`Invalid JSON in file ${path}: ${error.message}`)
295
+ };
296
+ }
297
+ }
298
+ catch (error) {
299
+ return {
300
+ data: null,
301
+ error: new Error(`Failed to read file ${path}: ${error.message}`)
302
+ };
303
+ }
506
304
  }
507
305
  /**
508
306
  * Checks if a path points to a file (not a directory).
@@ -510,24 +308,14 @@ export function safeReadJsonFile(path) {
510
308
  * @param {string} path - Path to check.
511
309
  * @returns {Promise<boolean>} True if the path is a file, false otherwise.
512
310
  */
513
- export function isFile(path) {
514
- return __awaiter(this, void 0, void 0, function () {
515
- var stat, _a;
516
- return __generator(this, function (_b) {
517
- switch (_b.label) {
518
- case 0:
519
- _b.trys.push([0, 2, , 3]);
520
- return [4 /*yield*/, fs.stat(path)];
521
- case 1:
522
- stat = _b.sent();
523
- return [2 /*return*/, stat.isFile()];
524
- case 2:
525
- _a = _b.sent();
526
- return [2 /*return*/, false];
527
- case 3: return [2 /*return*/];
528
- }
529
- });
530
- });
311
+ export async function isFile(path) {
312
+ try {
313
+ const stat = await fs.stat(path);
314
+ return stat.isFile();
315
+ }
316
+ catch {
317
+ return false;
318
+ }
531
319
  }
532
320
  /**
533
321
  * Gets the size of a file in bytes.
@@ -535,24 +323,14 @@ export function isFile(path) {
535
323
  * @param {string} path - Path to the file.
536
324
  * @returns {Promise<number>} Size in bytes or -1 if file doesn't exist.
537
325
  */
538
- export function getFileSize(path) {
539
- return __awaiter(this, void 0, void 0, function () {
540
- var stat, _a;
541
- return __generator(this, function (_b) {
542
- switch (_b.label) {
543
- case 0:
544
- _b.trys.push([0, 2, , 3]);
545
- return [4 /*yield*/, fs.stat(path)];
546
- case 1:
547
- stat = _b.sent();
548
- return [2 /*return*/, stat.size];
549
- case 2:
550
- _a = _b.sent();
551
- return [2 /*return*/, -1];
552
- case 3: return [2 /*return*/];
553
- }
554
- });
555
- });
326
+ export async function getFileSize(path) {
327
+ try {
328
+ const stat = await fs.stat(path);
329
+ return stat.size;
330
+ }
331
+ catch {
332
+ return -1;
333
+ }
556
334
  }
557
335
  /**
558
336
  * Reads a file as a Buffer.
@@ -560,21 +338,11 @@ export function getFileSize(path) {
560
338
  * @param {string} path - Path to the file.
561
339
  * @returns {Promise<Buffer | null>} File contents as Buffer or null if reading fails.
562
340
  */
563
- export function readFileBuffer(path) {
564
- return __awaiter(this, void 0, void 0, function () {
565
- var _a;
566
- return __generator(this, function (_b) {
567
- switch (_b.label) {
568
- case 0:
569
- _b.trys.push([0, 2, , 3]);
570
- return [4 /*yield*/, fs.readFile(path)];
571
- case 1: return [2 /*return*/, _b.sent()];
572
- case 2:
573
- _a = _b.sent();
574
- return [2 /*return*/, null];
575
- case 3: return [2 /*return*/];
576
- }
577
- });
578
- });
341
+ export async function readFileBuffer(path) {
342
+ try {
343
+ return await fs.readFile(path);
344
+ }
345
+ catch {
346
+ return null;
347
+ }
579
348
  }
580
- //# sourceMappingURL=fs.utils.js.map