zeed 1.3.0 → 1.4.0

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 (575) hide show
  1. package/AGENTS.md +50 -211
  2. package/README.md +16 -0
  3. package/dist/_experiments/bitcask.cjs +243 -1
  4. package/dist/_experiments/bitcask.cjs.map +1 -1
  5. package/dist/_experiments/bitcask.mjs +230 -1
  6. package/dist/_experiments/bitcask.mjs.map +1 -1
  7. package/dist/bin-BAoS4qtm.mjs +593 -0
  8. package/dist/{bin-SPdenYkw.mjs.map → bin-BAoS4qtm.mjs.map} +1 -1
  9. package/dist/bin-Ddaz2lxM.cjs +862 -0
  10. package/dist/{bin-Ce3i6ABn.cjs.map → bin-Ddaz2lxM.cjs.map} +1 -1
  11. package/dist/browser/base64.cjs +14 -1
  12. package/dist/browser/base64.cjs.map +1 -1
  13. package/dist/browser/base64.mjs +12 -1
  14. package/dist/browser/base64.mjs.map +1 -1
  15. package/dist/browser/gravatar.cjs +186 -1
  16. package/dist/browser/gravatar.cjs.map +1 -1
  17. package/dist/browser/gravatar.mjs +184 -1
  18. package/dist/browser/gravatar.mjs.map +1 -1
  19. package/dist/browser/index.cjs +14 -1
  20. package/dist/browser/index.mjs +8 -1
  21. package/dist/browser/localstorage.cjs +46 -1
  22. package/dist/browser/localstorage.cjs.map +1 -1
  23. package/dist/browser/localstorage.mjs +45 -1
  24. package/dist/browser/localstorage.mjs.map +1 -1
  25. package/dist/browser/log/index.cjs +8 -1
  26. package/dist/browser/log/index.mjs +5 -1
  27. package/dist/browser/log/log-browser-factory.cjs +65 -1
  28. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  29. package/dist/browser/log/log-browser-factory.mjs +64 -1
  30. package/dist/browser/log/log-browser-factory.mjs.map +1 -1
  31. package/dist/browser/log/log-browser.cjs +72 -1
  32. package/dist/browser/log/log-browser.cjs.map +1 -1
  33. package/dist/browser/log/log-browser.mjs +71 -1
  34. package/dist/browser/log/log-browser.mjs.map +1 -1
  35. package/dist/browser/log/log-colors.cjs +11 -1
  36. package/dist/browser/log/log-colors.cjs.map +1 -1
  37. package/dist/browser/log/log-colors.mjs +9 -1
  38. package/dist/browser/log/log-colors.mjs.map +1 -1
  39. package/dist/browser/log/log-context-browser.cjs +25 -1
  40. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  41. package/dist/browser/log/log-context-browser.mjs +23 -1
  42. package/dist/browser/log/log-context-browser.mjs.map +1 -1
  43. package/dist/chunk-DQk6qfdC.mjs +18 -0
  44. package/dist/chunk-uaV2rQ02.cjs +53 -0
  45. package/dist/common/assert.cjs +22 -1
  46. package/dist/common/assert.cjs.map +1 -1
  47. package/dist/common/assert.mjs +19 -1
  48. package/dist/common/assert.mjs.map +1 -1
  49. package/dist/common/bin/index.cjs +106 -1
  50. package/dist/common/bin/index.cjs.map +1 -1
  51. package/dist/common/bin/index.mjs +98 -1
  52. package/dist/common/bin/index.mjs.map +1 -1
  53. package/dist/common/bin/lib0/binary.cjs +146 -1
  54. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  55. package/dist/common/bin/lib0/binary.mjs +80 -1
  56. package/dist/common/bin/lib0/binary.mjs.map +1 -1
  57. package/dist/common/bin/lib0/buffer.cjs +42 -1
  58. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  59. package/dist/common/bin/lib0/buffer.mjs +38 -1
  60. package/dist/common/bin/lib0/buffer.mjs.map +1 -1
  61. package/dist/common/bin/lib0/create.cjs +24 -1
  62. package/dist/common/bin/lib0/create.cjs.map +1 -1
  63. package/dist/common/bin/lib0/create.mjs +21 -1
  64. package/dist/common/bin/lib0/create.mjs.map +1 -1
  65. package/dist/common/bin/lib0/decoding.cjs +325 -1
  66. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  67. package/dist/common/bin/lib0/decoding.mjs +298 -1
  68. package/dist/common/bin/lib0/decoding.mjs.map +1 -1
  69. package/dist/common/bin/lib0/encoding.cjs +404 -1
  70. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  71. package/dist/common/bin/lib0/encoding.mjs +377 -1
  72. package/dist/common/bin/lib0/encoding.mjs.map +1 -1
  73. package/dist/common/bin/lib0/string.cjs +81 -1
  74. package/dist/common/bin/lib0/string.cjs.map +1 -1
  75. package/dist/common/bin/lib0/string.mjs +71 -1
  76. package/dist/common/bin/lib0/string.mjs.map +1 -1
  77. package/dist/common/crypto/aes-sealed.cjs +34 -1
  78. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  79. package/dist/common/crypto/aes-sealed.mjs +32 -1
  80. package/dist/common/crypto/aes-sealed.mjs.map +1 -1
  81. package/dist/common/crypto/crypto.cjs +91 -1
  82. package/dist/common/crypto/crypto.cjs.map +1 -1
  83. package/dist/common/crypto/crypto.mjs +80 -1
  84. package/dist/common/crypto/crypto.mjs.map +1 -1
  85. package/dist/common/crypto/index.cjs +23 -1
  86. package/dist/common/crypto/index.mjs +5 -1
  87. package/dist/common/crypto/xaes.cjs +128 -1
  88. package/dist/common/crypto/xaes.cjs.map +1 -1
  89. package/dist/common/crypto/xaes.mjs +123 -1
  90. package/dist/common/crypto/xaes.mjs.map +1 -1
  91. package/dist/common/csv.cjs +49 -4
  92. package/dist/common/csv.cjs.map +1 -1
  93. package/dist/common/csv.mjs +46 -4
  94. package/dist/common/csv.mjs.map +1 -1
  95. package/dist/common/data/array.cjs +299 -1
  96. package/dist/common/data/array.cjs.map +1 -1
  97. package/dist/common/data/array.mjs +274 -1
  98. package/dist/common/data/array.mjs.map +1 -1
  99. package/dist/common/data/basex-secure.cjs +30 -1
  100. package/dist/common/data/basex-secure.mjs +3 -1
  101. package/dist/common/data/basex.cjs +163 -1
  102. package/dist/common/data/basex.cjs.map +1 -1
  103. package/dist/common/data/basex.mjs +152 -1
  104. package/dist/common/data/basex.mjs.map +1 -1
  105. package/dist/common/data/bin-types.mjs +1 -1
  106. package/dist/common/data/bin.cjs +21 -1
  107. package/dist/common/data/bin.mjs +3 -1
  108. package/dist/common/data/camelcase.cjs +27 -1
  109. package/dist/common/data/camelcase.cjs.map +1 -1
  110. package/dist/common/data/camelcase.mjs +22 -1
  111. package/dist/common/data/camelcase.mjs.map +1 -1
  112. package/dist/common/data/convert.cjs +104 -1
  113. package/dist/common/data/convert.cjs.map +1 -1
  114. package/dist/common/data/convert.mjs +88 -1
  115. package/dist/common/data/convert.mjs.map +1 -1
  116. package/dist/common/data/datauri.cjs +32 -1
  117. package/dist/common/data/datauri.cjs.map +1 -1
  118. package/dist/common/data/datauri.mjs +27 -1
  119. package/dist/common/data/datauri.mjs.map +1 -1
  120. package/dist/common/data/day-legacy.cjs +148 -1
  121. package/dist/common/data/day-legacy.cjs.map +1 -1
  122. package/dist/common/data/day-legacy.mjs +143 -1
  123. package/dist/common/data/day-legacy.mjs.map +1 -1
  124. package/dist/common/data/day.cjs +335 -1
  125. package/dist/common/data/day.cjs.map +1 -1
  126. package/dist/common/data/day.mjs +305 -1
  127. package/dist/common/data/day.mjs.map +1 -1
  128. package/dist/common/data/decimal.cjs +28 -1
  129. package/dist/common/data/decimal.cjs.map +1 -1
  130. package/dist/common/data/decimal.mjs +23 -1
  131. package/dist/common/data/decimal.mjs.map +1 -1
  132. package/dist/common/data/deep.cjs +57 -1
  133. package/dist/common/data/deep.cjs.map +1 -1
  134. package/dist/common/data/deep.mjs +54 -1
  135. package/dist/common/data/deep.mjs.map +1 -1
  136. package/dist/common/data/diff.cjs +62 -1
  137. package/dist/common/data/diff.cjs.map +1 -1
  138. package/dist/common/data/diff.mjs +60 -1
  139. package/dist/common/data/diff.mjs.map +1 -1
  140. package/dist/common/data/distributed.cjs +24 -1
  141. package/dist/common/data/distributed.cjs.map +1 -1
  142. package/dist/common/data/distributed.mjs +22 -1
  143. package/dist/common/data/distributed.mjs.map +1 -1
  144. package/dist/common/data/format.cjs +63 -1
  145. package/dist/common/data/format.cjs.map +1 -1
  146. package/dist/common/data/format.mjs +59 -1
  147. package/dist/common/data/format.mjs.map +1 -1
  148. package/dist/common/data/html.cjs +13 -1
  149. package/dist/common/data/html.cjs.map +1 -1
  150. package/dist/common/data/html.mjs +10 -1
  151. package/dist/common/data/html.mjs.map +1 -1
  152. package/dist/common/data/index.cjs +296 -1
  153. package/dist/common/data/index.mjs +37 -1
  154. package/dist/common/data/is.cjs +106 -1
  155. package/dist/common/data/is.cjs.map +1 -1
  156. package/dist/common/data/is.mjs +85 -1
  157. package/dist/common/data/is.mjs.map +1 -1
  158. package/dist/common/data/json.cjs +70 -1
  159. package/dist/common/data/json.cjs.map +1 -1
  160. package/dist/common/data/json.mjs +65 -1
  161. package/dist/common/data/json.mjs.map +1 -1
  162. package/dist/common/data/list.cjs +32 -1
  163. package/dist/common/data/list.cjs.map +1 -1
  164. package/dist/common/data/list.mjs +27 -1
  165. package/dist/common/data/list.mjs.map +1 -1
  166. package/dist/common/data/lru.mjs +1 -1
  167. package/dist/common/data/math.cjs +79 -1
  168. package/dist/common/data/math.cjs.map +1 -1
  169. package/dist/common/data/math.mjs +65 -1
  170. package/dist/common/data/math.mjs.map +1 -1
  171. package/dist/common/data/message.cjs +30 -1
  172. package/dist/common/data/message.cjs.map +1 -1
  173. package/dist/common/data/message.mjs +28 -1
  174. package/dist/common/data/message.mjs.map +1 -1
  175. package/dist/common/data/object-changes.cjs +66 -1
  176. package/dist/common/data/object-changes.cjs.map +1 -1
  177. package/dist/common/data/object-changes.mjs +63 -1
  178. package/dist/common/data/object-changes.mjs.map +1 -1
  179. package/dist/common/data/object.cjs +112 -1
  180. package/dist/common/data/object.cjs.map +1 -1
  181. package/dist/common/data/object.mjs +104 -1
  182. package/dist/common/data/object.mjs.map +1 -1
  183. package/dist/common/data/orderby.cjs +42 -1
  184. package/dist/common/data/orderby.cjs.map +1 -1
  185. package/dist/common/data/orderby.mjs +37 -1
  186. package/dist/common/data/orderby.mjs.map +1 -1
  187. package/dist/common/data/path.cjs +26 -1
  188. package/dist/common/data/path.cjs.map +1 -1
  189. package/dist/common/data/path.mjs +25 -1
  190. package/dist/common/data/path.mjs.map +1 -1
  191. package/dist/common/data/regexp.cjs +12 -1
  192. package/dist/common/data/regexp.cjs.map +1 -1
  193. package/dist/common/data/regexp.mjs +10 -1
  194. package/dist/common/data/regexp.mjs.map +1 -1
  195. package/dist/common/data/rounding.cjs +107 -1
  196. package/dist/common/data/rounding.cjs.map +1 -1
  197. package/dist/common/data/rounding.mjs +95 -1
  198. package/dist/common/data/rounding.mjs.map +1 -1
  199. package/dist/common/data/signal.cjs +39 -1
  200. package/dist/common/data/signal.cjs.map +1 -1
  201. package/dist/common/data/signal.mjs +38 -1
  202. package/dist/common/data/signal.mjs.map +1 -1
  203. package/dist/common/data/sortable.cjs +35 -1
  204. package/dist/common/data/sortable.cjs.map +1 -1
  205. package/dist/common/data/sortable.mjs +31 -1
  206. package/dist/common/data/sortable.mjs.map +1 -1
  207. package/dist/common/data/sorted.cjs +54 -1
  208. package/dist/common/data/sorted.cjs.map +1 -1
  209. package/dist/common/data/sorted.mjs +53 -1
  210. package/dist/common/data/sorted.mjs.map +1 -1
  211. package/dist/common/data/string-deburr.cjs +240 -1
  212. package/dist/common/data/string-deburr.cjs.map +1 -1
  213. package/dist/common/data/string-deburr.mjs +238 -1
  214. package/dist/common/data/string-deburr.mjs.map +1 -1
  215. package/dist/common/data/string-hash-fnv.cjs +69 -1
  216. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  217. package/dist/common/data/string-hash-fnv.mjs +67 -1
  218. package/dist/common/data/string-hash-fnv.mjs.map +1 -1
  219. package/dist/common/data/string-hash-pool.cjs +28 -1
  220. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  221. package/dist/common/data/string-hash-pool.mjs +27 -1
  222. package/dist/common/data/string-hash-pool.mjs.map +1 -1
  223. package/dist/common/data/url.cjs +98 -2
  224. package/dist/common/data/url.cjs.map +1 -1
  225. package/dist/common/data/url.mjs +91 -2
  226. package/dist/common/data/url.mjs.map +1 -1
  227. package/dist/common/data/utils.cjs +118 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/utils.mjs +107 -1
  230. package/dist/common/data/utils.mjs.map +1 -1
  231. package/dist/common/data/wordlist.cjs +531 -1
  232. package/dist/common/data/wordlist.cjs.map +1 -1
  233. package/dist/common/data/wordlist.mjs +529 -1
  234. package/dist/common/data/wordlist.mjs.map +1 -1
  235. package/dist/common/data/xrx.cjs +96 -1
  236. package/dist/common/data/xrx.cjs.map +1 -1
  237. package/dist/common/data/xrx.mjs +92 -1
  238. package/dist/common/data/xrx.mjs.map +1 -1
  239. package/dist/common/dispose-defer.cjs +133 -1
  240. package/dist/common/dispose-defer.cjs.map +1 -1
  241. package/dist/common/dispose-defer.mjs +130 -1
  242. package/dist/common/dispose-defer.mjs.map +1 -1
  243. package/dist/common/dispose-types.mjs +1 -1
  244. package/dist/common/dispose-utils.cjs +113 -1
  245. package/dist/common/dispose-utils.cjs.map +1 -1
  246. package/dist/common/dispose-utils.mjs +106 -1
  247. package/dist/common/dispose-utils.mjs.map +1 -1
  248. package/dist/common/exec/index.cjs +24 -1
  249. package/dist/common/exec/index.d.cts +1 -1
  250. package/dist/common/exec/index.d.mts +1 -1
  251. package/dist/common/exec/index.mjs +8 -1
  252. package/dist/common/exec/mutex.cjs +44 -1
  253. package/dist/common/exec/mutex.cjs.map +1 -1
  254. package/dist/common/exec/mutex.mjs +42 -1
  255. package/dist/common/exec/mutex.mjs.map +1 -1
  256. package/dist/common/exec/pool.cjs +181 -1
  257. package/dist/common/exec/pool.cjs.map +1 -1
  258. package/dist/common/exec/pool.d.cts +1 -1
  259. package/dist/common/exec/pool.d.mts +1 -1
  260. package/dist/common/exec/pool.mjs +180 -1
  261. package/dist/common/exec/pool.mjs.map +1 -1
  262. package/dist/common/exec/progress.cjs +149 -1
  263. package/dist/common/exec/progress.cjs.map +1 -1
  264. package/dist/common/exec/progress.d.cts +1 -1
  265. package/dist/common/exec/progress.d.mts +1 -1
  266. package/dist/common/exec/progress.mjs +148 -1
  267. package/dist/common/exec/progress.mjs.map +1 -1
  268. package/dist/common/exec/promise.cjs +113 -1
  269. package/dist/common/exec/promise.cjs.map +1 -1
  270. package/dist/common/exec/promise.mjs +103 -1
  271. package/dist/common/exec/promise.mjs.map +1 -1
  272. package/dist/common/exec/queue.cjs +125 -1
  273. package/dist/common/exec/queue.cjs.map +1 -1
  274. package/dist/common/exec/queue.d.cts +1 -1
  275. package/dist/common/exec/queue.d.mts +1 -1
  276. package/dist/common/exec/queue.mjs +124 -1
  277. package/dist/common/exec/queue.mjs.map +1 -1
  278. package/dist/common/exec/throttle-debounce.cjs +114 -1
  279. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  280. package/dist/common/exec/throttle-debounce.mjs +112 -1
  281. package/dist/common/exec/throttle-debounce.mjs.map +1 -1
  282. package/dist/common/global.cjs +22 -1
  283. package/dist/common/global.cjs.map +1 -1
  284. package/dist/common/global.mjs +19 -1
  285. package/dist/common/global.mjs.map +1 -1
  286. package/dist/common/index.cjs +559 -1
  287. package/dist/common/index.d.cts +1 -1
  288. package/dist/common/index.d.mts +1 -1
  289. package/dist/common/index.mjs +89 -1
  290. package/dist/common/localhost.cjs +16 -1
  291. package/dist/common/localhost.cjs.map +1 -1
  292. package/dist/common/localhost.mjs +14 -1
  293. package/dist/common/localhost.mjs.map +1 -1
  294. package/dist/common/log/index.cjs +34 -1
  295. package/dist/common/log/index.mjs +11 -1
  296. package/dist/common/log/log-base.cjs +40 -1
  297. package/dist/common/log/log-base.cjs.map +1 -1
  298. package/dist/common/log/log-base.mjs +31 -1
  299. package/dist/common/log/log-base.mjs.map +1 -1
  300. package/dist/common/log/log-colors.cjs +92 -1
  301. package/dist/common/log/log-colors.cjs.map +1 -1
  302. package/dist/common/log/log-colors.mjs +90 -1
  303. package/dist/common/log/log-colors.mjs.map +1 -1
  304. package/dist/common/log/log-config.cjs +15 -1
  305. package/dist/common/log/log-config.cjs.map +1 -1
  306. package/dist/common/log/log-config.mjs +14 -1
  307. package/dist/common/log/log-config.mjs.map +1 -1
  308. package/dist/common/log/log-console-capture.cjs +33 -1
  309. package/dist/common/log/log-console-capture.cjs.map +1 -1
  310. package/dist/common/log/log-console-capture.mjs +32 -1
  311. package/dist/common/log/log-console-capture.mjs.map +1 -1
  312. package/dist/common/log/log-console-original.cjs +27 -1
  313. package/dist/common/log/log-console-original.cjs.map +1 -1
  314. package/dist/common/log/log-console-original.mjs +26 -1
  315. package/dist/common/log/log-console-original.mjs.map +1 -1
  316. package/dist/common/log/log-console.cjs +39 -1
  317. package/dist/common/log/log-console.cjs.map +1 -1
  318. package/dist/common/log/log-console.mjs +38 -1
  319. package/dist/common/log/log-console.mjs.map +1 -1
  320. package/dist/common/log/log-context.cjs +109 -1
  321. package/dist/common/log/log-context.cjs.map +1 -1
  322. package/dist/common/log/log-context.mjs +108 -1
  323. package/dist/common/log/log-context.mjs.map +1 -1
  324. package/dist/common/log/log-filter.cjs +80 -1
  325. package/dist/common/log/log-filter.cjs.map +1 -1
  326. package/dist/common/log/log-filter.mjs +75 -1
  327. package/dist/common/log/log-filter.mjs.map +1 -1
  328. package/dist/common/log/log-memory.cjs +45 -1
  329. package/dist/common/log/log-memory.cjs.map +1 -1
  330. package/dist/common/log/log-memory.mjs +43 -1
  331. package/dist/common/log/log-memory.mjs.map +1 -1
  332. package/dist/common/log/log-noop.cjs +17 -1
  333. package/dist/common/log/log-noop.cjs.map +1 -1
  334. package/dist/common/log/log-noop.mjs +15 -1
  335. package/dist/common/log/log-noop.mjs.map +1 -1
  336. package/dist/common/log/log.cjs +46 -1
  337. package/dist/common/log/log.cjs.map +1 -1
  338. package/dist/common/log/log.mjs +43 -1
  339. package/dist/common/log/log.mjs.map +1 -1
  340. package/dist/common/msg/channel-debug.cjs +17 -1
  341. package/dist/common/msg/channel-debug.cjs.map +1 -1
  342. package/dist/common/msg/channel-debug.d.cts +1 -1
  343. package/dist/common/msg/channel-debug.d.mts +1 -1
  344. package/dist/common/msg/channel-debug.mjs +16 -1
  345. package/dist/common/msg/channel-debug.mjs.map +1 -1
  346. package/dist/common/msg/channel-local.cjs +28 -1
  347. package/dist/common/msg/channel-local.cjs.map +1 -1
  348. package/dist/common/msg/channel-local.d.cts +1 -1
  349. package/dist/common/msg/channel-local.d.mts +1 -1
  350. package/dist/common/msg/channel-local.mjs +26 -1
  351. package/dist/common/msg/channel-local.mjs.map +1 -1
  352. package/dist/common/msg/channel-resilient.cjs +63 -1
  353. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  354. package/dist/common/msg/channel-resilient.d.cts +1 -1
  355. package/dist/common/msg/channel-resilient.d.mts +1 -1
  356. package/dist/common/msg/channel-resilient.mjs +62 -1
  357. package/dist/common/msg/channel-resilient.mjs.map +1 -1
  358. package/dist/common/msg/channel-wkwebview.cjs +35 -1
  359. package/dist/common/msg/channel-wkwebview.cjs.map +1 -1
  360. package/dist/common/msg/channel-wkwebview.d.cts +2 -1
  361. package/dist/common/msg/channel-wkwebview.d.mts +2 -1
  362. package/dist/common/msg/channel-wkwebview.mjs +34 -1
  363. package/dist/common/msg/channel-wkwebview.mjs.map +1 -1
  364. package/dist/common/msg/channel.cjs +23 -1
  365. package/dist/common/msg/channel.cjs.map +1 -1
  366. package/dist/common/msg/channel.d.cts +1 -1
  367. package/dist/common/msg/channel.d.mts +1 -1
  368. package/dist/common/msg/channel.mjs +22 -1
  369. package/dist/common/msg/channel.mjs.map +1 -1
  370. package/dist/common/msg/emitter.cjs +141 -1
  371. package/dist/common/msg/emitter.cjs.map +1 -1
  372. package/dist/common/msg/emitter.d.cts +1 -1
  373. package/dist/common/msg/emitter.d.mts +1 -1
  374. package/dist/common/msg/emitter.mjs +139 -1
  375. package/dist/common/msg/emitter.mjs.map +1 -1
  376. package/dist/common/msg/encoder.cjs +38 -1
  377. package/dist/common/msg/encoder.cjs.map +1 -1
  378. package/dist/common/msg/encoder.mjs +35 -1
  379. package/dist/common/msg/encoder.mjs.map +1 -1
  380. package/dist/common/msg/index.cjs +28 -1
  381. package/dist/common/msg/index.d.cts +1 -1
  382. package/dist/common/msg/index.d.mts +1 -1
  383. package/dist/common/msg/index.mjs +11 -1
  384. package/dist/common/msg/messages.cjs +135 -1
  385. package/dist/common/msg/messages.cjs.map +1 -1
  386. package/dist/common/msg/messages.d.cts +1 -1
  387. package/dist/common/msg/messages.d.mts +1 -1
  388. package/dist/common/msg/messages.mjs +133 -1
  389. package/dist/common/msg/messages.mjs.map +1 -1
  390. package/dist/common/msg/pipe.mjs +1 -1
  391. package/dist/common/msg/pubsub.cjs +78 -1
  392. package/dist/common/msg/pubsub.cjs.map +1 -1
  393. package/dist/common/msg/pubsub.d.cts +1 -1
  394. package/dist/common/msg/pubsub.d.mts +1 -1
  395. package/dist/common/msg/pubsub.mjs +76 -1
  396. package/dist/common/msg/pubsub.mjs.map +1 -1
  397. package/dist/common/msg/rpc.cjs +142 -1
  398. package/dist/common/msg/rpc.cjs.map +1 -1
  399. package/dist/common/msg/rpc.mjs +139 -1
  400. package/dist/common/msg/rpc.mjs.map +1 -1
  401. package/dist/common/network.cjs +129 -1
  402. package/dist/common/network.cjs.map +1 -1
  403. package/dist/common/network.mjs +122 -1
  404. package/dist/common/network.mjs.map +1 -1
  405. package/dist/common/platform.cjs +92 -1
  406. package/dist/common/platform.cjs.map +1 -1
  407. package/dist/common/platform.mjs +84 -1
  408. package/dist/common/platform.mjs.map +1 -1
  409. package/dist/common/schema/_sandbox/sandbox-inherit.mjs +1 -1
  410. package/dist/common/schema/_sandbox/sandbox.mjs +1 -1
  411. package/dist/common/schema/_sandbox/sandbox.xspec.mjs +1 -1
  412. package/dist/common/schema/export-json-schema.cjs +54 -1
  413. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  414. package/dist/common/schema/export-json-schema.mjs +52 -1
  415. package/dist/common/schema/export-json-schema.mjs.map +1 -1
  416. package/dist/common/schema/export-swift.cjs +30 -2
  417. package/dist/common/schema/export-swift.cjs.map +1 -1
  418. package/dist/common/schema/export-swift.mjs +29 -2
  419. package/dist/common/schema/export-swift.mjs.map +1 -1
  420. package/dist/common/schema/export-typescript.cjs +20 -2
  421. package/dist/common/schema/export-typescript.cjs.map +1 -1
  422. package/dist/common/schema/export-typescript.mjs +19 -2
  423. package/dist/common/schema/export-typescript.mjs.map +1 -1
  424. package/dist/common/schema/index.cjs +55 -1
  425. package/dist/common/schema/index.mjs +12 -1
  426. package/dist/common/schema/parse-args.cjs +62 -2
  427. package/dist/common/schema/parse-args.cjs.map +1 -1
  428. package/dist/common/schema/parse-args.mjs +60 -2
  429. package/dist/common/schema/parse-args.mjs.map +1 -1
  430. package/dist/common/schema/parse-env.cjs +48 -3
  431. package/dist/common/schema/parse-env.cjs.map +1 -1
  432. package/dist/common/schema/parse-env.mjs +46 -3
  433. package/dist/common/schema/parse-env.mjs.map +1 -1
  434. package/dist/common/schema/parse-object.cjs +122 -1
  435. package/dist/common/schema/parse-object.cjs.map +1 -1
  436. package/dist/common/schema/parse-object.mjs +119 -1
  437. package/dist/common/schema/parse-object.mjs.map +1 -1
  438. package/dist/common/schema/schema-standard.mjs +1 -1
  439. package/dist/common/schema/schema.cjs +423 -1
  440. package/dist/common/schema/schema.cjs.map +1 -1
  441. package/dist/common/schema/schema.mjs +404 -1
  442. package/dist/common/schema/schema.mjs.map +1 -1
  443. package/dist/common/schema/serialize.cjs +109 -1
  444. package/dist/common/schema/serialize.cjs.map +1 -1
  445. package/dist/common/schema/serialize.mjs +107 -1
  446. package/dist/common/schema/serialize.mjs.map +1 -1
  447. package/dist/common/schema/type-test.mjs +1 -1
  448. package/dist/common/schema/utils.cjs +25 -1
  449. package/dist/common/schema/utils.cjs.map +1 -1
  450. package/dist/common/schema/utils.mjs +19 -1
  451. package/dist/common/schema/utils.mjs.map +1 -1
  452. package/dist/common/schema/z-collection.cjs +51 -1
  453. package/dist/common/schema/z-collection.mjs +27 -1
  454. package/dist/common/schema/z.cjs +9 -1
  455. package/dist/common/schema/z.mjs +3 -1
  456. package/dist/common/storage/index.cjs +4 -1
  457. package/dist/common/storage/index.mjs +3 -1
  458. package/dist/common/storage/memstorage.cjs +26 -1
  459. package/dist/common/storage/memstorage.cjs.map +1 -1
  460. package/dist/common/storage/memstorage.mjs +25 -1
  461. package/dist/common/storage/memstorage.mjs.map +1 -1
  462. package/dist/common/test.cjs +14 -1
  463. package/dist/common/test.cjs.map +1 -1
  464. package/dist/common/test.mjs +13 -1
  465. package/dist/common/test.mjs.map +1 -1
  466. package/dist/common/time.cjs +220 -1
  467. package/dist/common/time.cjs.map +1 -1
  468. package/dist/common/time.mjs +194 -1
  469. package/dist/common/time.mjs.map +1 -1
  470. package/dist/common/timeout.cjs +27 -1
  471. package/dist/common/timeout.cjs.map +1 -1
  472. package/dist/common/timeout.mjs +25 -1
  473. package/dist/common/timeout.mjs.map +1 -1
  474. package/dist/common/types.mjs +1 -1
  475. package/dist/common/utils.cjs +7 -1
  476. package/dist/common/utils.cjs.map +1 -1
  477. package/dist/common/utils.mjs +5 -1
  478. package/dist/common/utils.mjs.map +1 -1
  479. package/dist/common/uuid.cjs +307 -1
  480. package/dist/common/uuid.cjs.map +1 -1
  481. package/dist/common/uuid.mjs +284 -1
  482. package/dist/common/uuid.mjs.map +1 -1
  483. package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
  484. package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
  485. package/dist/index.all.cjs +641 -1
  486. package/dist/index.all.d.cts +1 -1
  487. package/dist/index.all.d.mts +1 -1
  488. package/dist/index.all.mjs +113 -1
  489. package/dist/index.browser.cjs +576 -1
  490. package/dist/index.browser.d.cts +1 -1
  491. package/dist/index.browser.d.mts +1 -1
  492. package/dist/index.browser.mjs +98 -1
  493. package/dist/index.jsr.cjs +57 -1
  494. package/dist/index.jsr.mjs +6 -1
  495. package/dist/index.node.cjs +628 -1
  496. package/dist/index.node.d.cts +1 -1
  497. package/dist/index.node.d.mts +1 -1
  498. package/dist/index.node.mjs +106 -1
  499. package/dist/node/args.cjs +56 -1
  500. package/dist/node/args.cjs.map +1 -1
  501. package/dist/node/args.mjs +53 -1
  502. package/dist/node/args.mjs.map +1 -1
  503. package/dist/node/clipboard.cjs +18 -1
  504. package/dist/node/clipboard.cjs.map +1 -1
  505. package/dist/node/clipboard.mjs +16 -1
  506. package/dist/node/clipboard.mjs.map +1 -1
  507. package/dist/node/crypto.cjs +28 -1
  508. package/dist/node/crypto.cjs.map +1 -1
  509. package/dist/node/crypto.mjs +24 -1
  510. package/dist/node/crypto.mjs.map +1 -1
  511. package/dist/node/env.cjs +100 -4
  512. package/dist/node/env.cjs.map +1 -1
  513. package/dist/node/env.mjs +90 -4
  514. package/dist/node/env.mjs.map +1 -1
  515. package/dist/node/files-async.cjs +66 -1
  516. package/dist/node/files-async.cjs.map +1 -1
  517. package/dist/node/files-async.mjs +60 -1
  518. package/dist/node/files-async.mjs.map +1 -1
  519. package/dist/node/files.cjs +52 -1
  520. package/dist/node/files.cjs.map +1 -1
  521. package/dist/node/files.mjs +46 -1
  522. package/dist/node/files.mjs.map +1 -1
  523. package/dist/node/filestorage.cjs +100 -1
  524. package/dist/node/filestorage.cjs.map +1 -1
  525. package/dist/node/filestorage.mjs +97 -1
  526. package/dist/node/filestorage.mjs.map +1 -1
  527. package/dist/node/fs.cjs +119 -1
  528. package/dist/node/fs.cjs.map +1 -1
  529. package/dist/node/fs.mjs +101 -1
  530. package/dist/node/fs.mjs.map +1 -1
  531. package/dist/node/glob.cjs +75 -1
  532. package/dist/node/glob.cjs.map +1 -1
  533. package/dist/node/glob.mjs +73 -1
  534. package/dist/node/glob.mjs.map +1 -1
  535. package/dist/node/index.cjs +66 -1
  536. package/dist/node/index.mjs +16 -1
  537. package/dist/node/log/index.cjs +20 -1
  538. package/dist/node/log/index.mjs +7 -1
  539. package/dist/node/log/log-context-node.cjs +39 -1
  540. package/dist/node/log/log-context-node.cjs.map +1 -1
  541. package/dist/node/log/log-context-node.mjs +35 -1
  542. package/dist/node/log/log-context-node.mjs.map +1 -1
  543. package/dist/node/log/log-file-rotation.cjs +71 -1
  544. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  545. package/dist/node/log/log-file-rotation.mjs +68 -1
  546. package/dist/node/log/log-file-rotation.mjs.map +1 -1
  547. package/dist/node/log/log-file.cjs +57 -1
  548. package/dist/node/log/log-file.cjs.map +1 -1
  549. package/dist/node/log/log-file.mjs +54 -1
  550. package/dist/node/log/log-file.mjs.map +1 -1
  551. package/dist/node/log/log-node.cjs +162 -1
  552. package/dist/node/log/log-node.cjs.map +1 -1
  553. package/dist/node/log/log-node.mjs +155 -1
  554. package/dist/node/log/log-node.mjs.map +1 -1
  555. package/dist/node/log/log-rotation.cjs +543 -3
  556. package/dist/node/log/log-rotation.cjs.map +1 -1
  557. package/dist/node/log/log-rotation.mjs +538 -3
  558. package/dist/node/log/log-rotation.mjs.map +1 -1
  559. package/dist/node/log/log-util.cjs +69 -3
  560. package/dist/node/log/log-util.cjs.map +1 -1
  561. package/dist/node/log/log-util.mjs +63 -3
  562. package/dist/node/log/log-util.mjs.map +1 -1
  563. package/dist/node/open-browser.cjs +20 -1
  564. package/dist/node/open-browser.cjs.map +1 -1
  565. package/dist/node/open-browser.mjs +18 -1
  566. package/dist/node/open-browser.mjs.map +1 -1
  567. package/package.json +15 -15
  568. package/src/common/schema/README.md +247 -66
  569. package/src/eslint-defaults.js +4 -0
  570. package/src/index.spec.ts +6 -6
  571. package/dist/bin-Ce3i6ABn.cjs +0 -3
  572. package/dist/bin-SPdenYkw.mjs +0 -3
  573. package/dist/chunk-0Lt9GpW0.mjs +0 -1
  574. package/dist/chunk-D-qHiVGv.cjs +0 -1
  575. package/src/common/schema/README-SCHEMA.md +0 -0
@@ -1,2 +1,47 @@
1
- import{isHiddenPath as e}from"./fs.mjs";import{globToRegExp as t}from"./glob.mjs";import n from"node:process";import{readdirSync as r,statSync as i}from"node:fs";import{join as a,resolve as o}from"node:path";function s(e){try{return i(e)}catch{}}function c(e){let{mtimeMs:t,size:n}=s(e)??{};return`${e}|${t}|${n}`}function l(t,n=``,i=!0){let c=[],u=r(o(t,n));if(u!=null&&u.length>0)for(let r of u){if(r=a(n,r),i&&e(r))continue;let o=s(a(t,r));o&&o.isDirectory()?c=[...c,...l(t,r)||[]]:c.push(r)}return c}function u(e={}){let{pattern:r,filter:i,basePath:a=n.cwd(),ignoreHidden:o=!1}=e,s=l(a,``,o);if(s=s.filter(e=>!(o&&(e.startsWith(`.`)||e.includes(`/.`)))),r&&(typeof r==`string`&&(r=t(r)),r instanceof RegExp)){let e=r;e.lastIndex=0,s=s.filter(t=>e.test(t))}return i&&(s=s.filter(i)),s}export{u as files,c as getFingerprint,s as getStat,l as walkSync};
1
+ import { isHiddenPath } from "./fs.mjs";
2
+ import { globToRegExp } from "./glob.mjs";
3
+ import process from "node:process";
4
+ import { readdirSync, statSync } from "node:fs";
5
+ import { join, resolve } from "node:path";
6
+
7
+ //#region src/node/files.ts
8
+ function getStat(path) {
9
+ try {
10
+ return statSync(path);
11
+ } catch (err) {}
12
+ }
13
+ function getFingerprint(path) {
14
+ const { mtimeMs, size } = getStat(path) ?? {};
15
+ return `${path}|${mtimeMs}|${size}`;
16
+ }
17
+ function walkSync(rootFolder, subFolder = "", ignoreHidden = true) {
18
+ let resultPaths = [];
19
+ const paths = readdirSync(resolve(rootFolder, subFolder));
20
+ if (paths != null && paths.length > 0) for (let file of paths) {
21
+ file = join(subFolder, file);
22
+ if (ignoreHidden && isHiddenPath(file)) continue;
23
+ const stat = getStat(join(rootFolder, file));
24
+ if (stat && stat.isDirectory()) resultPaths = [...resultPaths, ...walkSync(rootFolder, file) || []];
25
+ else resultPaths.push(file);
26
+ }
27
+ return resultPaths;
28
+ }
29
+ function files(opt = {}) {
30
+ let { pattern, filter, basePath = process.cwd(), ignoreHidden = false } = opt;
31
+ let paths = walkSync(basePath, "", ignoreHidden);
32
+ paths = paths.filter((path) => !(ignoreHidden && (path.startsWith(".") || path.includes("/."))));
33
+ if (pattern) {
34
+ if (typeof pattern === "string") pattern = globToRegExp(pattern);
35
+ if (pattern instanceof RegExp) {
36
+ const rx = pattern;
37
+ rx.lastIndex = 0;
38
+ paths = paths.filter((path) => rx.test(path));
39
+ }
40
+ }
41
+ if (filter) paths = paths.filter(filter);
42
+ return paths;
43
+ }
44
+
45
+ //#endregion
46
+ export { files, getFingerprint, getStat, walkSync };
2
47
  //# sourceMappingURL=files.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.mjs","names":[],"sources":["../../src/node/files.ts"],"sourcesContent":["import { readdirSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport process from 'node:process'\nimport { isHiddenPath } from './fs'\nimport { globToRegExp } from './glob'\n\nexport function getStat(path: string): any {\n try {\n return statSync(path)\n }\n catch (err) { }\n}\n\nexport function getFingerprint(path: string) {\n const { mtimeMs, size } = getStat(path) ?? {}\n return `${path}|${mtimeMs}|${size}`\n}\n\nexport function walkSync(rootFolder: string, subFolder = '', ignoreHidden = true) {\n let resultPaths: string[] = []\n const paths = readdirSync(resolve(rootFolder, subFolder))\n if (paths != null && paths.length > 0) {\n for (let file of paths) {\n file = join(subFolder, file)\n if (ignoreHidden && isHiddenPath(file))\n continue\n const realFile = join(rootFolder, file)\n const stat = getStat(realFile)\n if (stat && stat.isDirectory())\n resultPaths = [...resultPaths, ...walkSync(rootFolder, file) || []]\n else\n resultPaths.push(file)\n }\n }\n return resultPaths\n}\n\nexport function files(opt: {\n basePath?: string\n pattern?: string | RegExp\n filter?: (name: string) => boolean\n ignoreHidden?: boolean\n} = {}) {\n let {\n pattern,\n filter,\n basePath = process.cwd(),\n ignoreHidden = false,\n } = opt\n\n let paths = walkSync(basePath, '', ignoreHidden)\n\n paths = paths.filter(\n path =>\n !(ignoreHidden && (path.startsWith('.') || path.includes('/.'))),\n )\n\n if (pattern) {\n if (typeof pattern === 'string')\n pattern = globToRegExp(pattern)\n if (pattern instanceof RegExp) {\n const rx = pattern\n rx.lastIndex = 0\n paths = paths.filter(path => rx.test(path))\n }\n }\n\n if (filter)\n paths = paths.filter(filter)\n\n return paths\n}\n"],"mappings":"gNAMA,SAAgB,EAAQ,EAAmB,CACzC,GAAI,CACF,OAAO,EAAS,EAAK,MAEX,GAGd,SAAgB,EAAe,EAAc,CAC3C,GAAM,CAAE,UAAS,QAAS,EAAQ,EAAK,EAAI,EAAE,CAC7C,MAAO,GAAG,EAAK,GAAG,EAAQ,GAAG,IAG/B,SAAgB,EAAS,EAAoB,EAAY,GAAI,EAAe,GAAM,CAChF,IAAI,EAAwB,EAAE,CACxB,EAAQ,EAAY,EAAQ,EAAY,EAAU,CAAC,CACzD,GAAI,GAAS,MAAQ,EAAM,OAAS,EAClC,IAAK,IAAI,KAAQ,EAAO,CAEtB,GADA,EAAO,EAAK,EAAW,EAAK,CACxB,GAAgB,EAAa,EAAK,CACpC,SAEF,IAAM,EAAO,EADI,EAAK,EAAY,EAAK,CACT,CAC1B,GAAQ,EAAK,aAAa,CAC5B,EAAc,CAAC,GAAG,EAAa,GAAG,EAAS,EAAY,EAAK,EAAI,EAAE,CAAC,CAEnE,EAAY,KAAK,EAAK,CAG5B,OAAO,EAGT,SAAgB,EAAM,EAKlB,EAAE,CAAE,CACN,GAAI,CACF,UACA,SACA,WAAW,EAAQ,KAAK,CACxB,eAAe,IACb,EAEA,EAAQ,EAAS,EAAU,GAAI,EAAa,CAOhD,GALA,EAAQ,EAAM,OACZ,GACE,EAAE,IAAiB,EAAK,WAAW,IAAI,EAAI,EAAK,SAAS,KAAK,GACjE,CAEG,IACE,OAAO,GAAY,WACrB,EAAU,EAAa,EAAQ,EAC7B,aAAmB,QAAQ,CAC7B,IAAM,EAAK,EACX,EAAG,UAAY,EACf,EAAQ,EAAM,OAAO,GAAQ,EAAG,KAAK,EAAK,CAAC,CAO/C,OAHI,IACF,EAAQ,EAAM,OAAO,EAAO,EAEvB"}
1
+ {"version":3,"file":"files.mjs","names":[],"sources":["../../src/node/files.ts"],"sourcesContent":["import { readdirSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport process from 'node:process'\nimport { isHiddenPath } from './fs'\nimport { globToRegExp } from './glob'\n\nexport function getStat(path: string): any {\n try {\n return statSync(path)\n }\n catch (err) { }\n}\n\nexport function getFingerprint(path: string) {\n const { mtimeMs, size } = getStat(path) ?? {}\n return `${path}|${mtimeMs}|${size}`\n}\n\nexport function walkSync(rootFolder: string, subFolder = '', ignoreHidden = true) {\n let resultPaths: string[] = []\n const paths = readdirSync(resolve(rootFolder, subFolder))\n if (paths != null && paths.length > 0) {\n for (let file of paths) {\n file = join(subFolder, file)\n if (ignoreHidden && isHiddenPath(file))\n continue\n const realFile = join(rootFolder, file)\n const stat = getStat(realFile)\n if (stat && stat.isDirectory())\n resultPaths = [...resultPaths, ...walkSync(rootFolder, file) || []]\n else\n resultPaths.push(file)\n }\n }\n return resultPaths\n}\n\nexport function files(opt: {\n basePath?: string\n pattern?: string | RegExp\n filter?: (name: string) => boolean\n ignoreHidden?: boolean\n} = {}) {\n let {\n pattern,\n filter,\n basePath = process.cwd(),\n ignoreHidden = false,\n } = opt\n\n let paths = walkSync(basePath, '', ignoreHidden)\n\n paths = paths.filter(\n path =>\n !(ignoreHidden && (path.startsWith('.') || path.includes('/.'))),\n )\n\n if (pattern) {\n if (typeof pattern === 'string')\n pattern = globToRegExp(pattern)\n if (pattern instanceof RegExp) {\n const rx = pattern\n rx.lastIndex = 0\n paths = paths.filter(path => rx.test(path))\n }\n }\n\n if (filter)\n paths = paths.filter(filter)\n\n return paths\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,QAAQ,MAAmB;AACzC,KAAI;AACF,SAAO,SAAS,KAAK;UAEhB,KAAK;;AAGd,SAAgB,eAAe,MAAc;CAC3C,MAAM,EAAE,SAAS,SAAS,QAAQ,KAAK,IAAI,EAAE;AAC7C,QAAO,GAAG,KAAK,GAAG,QAAQ,GAAG;;AAG/B,SAAgB,SAAS,YAAoB,YAAY,IAAI,eAAe,MAAM;CAChF,IAAI,cAAwB,EAAE;CAC9B,MAAM,QAAQ,YAAY,QAAQ,YAAY,UAAU,CAAC;AACzD,KAAI,SAAS,QAAQ,MAAM,SAAS,EAClC,MAAK,IAAI,QAAQ,OAAO;AACtB,SAAO,KAAK,WAAW,KAAK;AAC5B,MAAI,gBAAgB,aAAa,KAAK,CACpC;EAEF,MAAM,OAAO,QADI,KAAK,YAAY,KAAK,CACT;AAC9B,MAAI,QAAQ,KAAK,aAAa,CAC5B,eAAc,CAAC,GAAG,aAAa,GAAG,SAAS,YAAY,KAAK,IAAI,EAAE,CAAC;MAEnE,aAAY,KAAK,KAAK;;AAG5B,QAAO;;AAGT,SAAgB,MAAM,MAKlB,EAAE,EAAE;CACN,IAAI,EACF,SACA,QACA,WAAW,QAAQ,KAAK,EACxB,eAAe,UACb;CAEJ,IAAI,QAAQ,SAAS,UAAU,IAAI,aAAa;AAEhD,SAAQ,MAAM,QACZ,SACE,EAAE,iBAAiB,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,KAAK,GACjE;AAED,KAAI,SAAS;AACX,MAAI,OAAO,YAAY,SACrB,WAAU,aAAa,QAAQ;AACjC,MAAI,mBAAmB,QAAQ;GAC7B,MAAM,KAAK;AACX,MAAG,YAAY;AACf,WAAQ,MAAM,QAAO,SAAQ,GAAG,KAAK,KAAK,CAAC;;;AAI/C,KAAI,OACF,SAAQ,MAAM,OAAO,OAAO;AAE9B,QAAO"}
@@ -1,2 +1,101 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-D-qHiVGv.cjs`),t=require(`../common/data/json.cjs`),n=require(`../common/data/utils.cjs`),r=require(`../common/data/path.cjs`);let i=require(`node:process`);i=e.n(i);let a=require(`node:fs`),o=require(`node:path`),s=require(`node:buffer`);var c=class{store={};dirname;fileKeys=void 0;pretty=!1;extension;extensionLength;objectFromString;objectToString;keyToFilename;constructor(e={}){this.dirname=(0,o.resolve)(i.default.cwd(),e.path??`.fileStorage`),this.pretty=!!e.pretty,this.extension=e.extension??`.json`,e.extension&&!this.extension.startsWith(`.`)&&(this.extension=`.${this.extension}`),this.extensionLength=this.extension.length,this.objectToString=e.objectToString??(e=>this.pretty?t.jsonStringifySafe(e,null,2):t.jsonStringifySafe(e)),this.objectFromString=e.objectFromString??(e=>{try{return JSON.parse(e)}catch{}}),this.keyToFilename=e.keyToFilename??r.toValidFilename}setItem(e,t){this.store[e]=n.cloneObject(t);try{let n=this.objectToString(t),r=this.getPath(e);(0,a.mkdirSync)((0,o.dirname)(r),{recursive:!0}),(0,a.writeFileSync)(r,n,`utf8`)}catch{}}getPath(e){return(0,o.resolve)(this.dirname,this.keyToFilename(e)+this.extension)}getBuffer(e){let t=this.getPath(e);return s.Buffer.from((0,a.readFileSync)(t))}getItem(e){let t=this.store[e];if(t!==null){if(t!=null)return n.cloneObject(t);try{let t=(0,a.readFileSync)(this.getPath(e),`utf8`);if(t!=null){let n=this.objectFromString(t);return this.store[e]=n,n}}catch{this.store[e]=null}}}removeItem(e){if(delete this.store[e],this.fileKeys!=null){let t=this.fileKeys.indexOf(e);t!==-1&&this.fileKeys.splice(t,1)}try{(0,a.unlinkSync)(this.getPath(e))}catch{}}clear(){this.fileKeys=[],this.store={},(0,a.rmSync)(this.dirname,{recursive:!0,force:!0})}allKeys(){if(this.fileKeys==null)try{this.fileKeys=(0,a.readdirSync)(this.dirname,{withFileTypes:!0}).filter(e=>!e.isDirectory()&&e.name.endsWith(this.extension)).map(e=>e.name.slice(0,-this.extensionLength))||[]}catch{}let e=[...this.fileKeys||[]];for(let t of Object.keys(this.store))e.includes(t)||e.push(t);return e.sort(),e}};exports.FileStorage=c;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../chunk-uaV2rQ02.cjs');
3
+ const require_common_data_json = require('../common/data/json.cjs');
4
+ const require_common_data_utils = require('../common/data/utils.cjs');
5
+ const require_common_data_path = require('../common/data/path.cjs');
6
+ let node_process = require("node:process");
7
+ node_process = require_chunk.__toESM(node_process, 1);
8
+ let node_fs = require("node:fs");
9
+ let node_path = require("node:path");
10
+ let node_buffer = require("node:buffer");
11
+
12
+ //#region src/node/filestorage.ts
13
+ var FileStorage = class {
14
+ store = {};
15
+ dirname;
16
+ fileKeys = void 0;
17
+ pretty = false;
18
+ extension;
19
+ extensionLength;
20
+ objectFromString;
21
+ objectToString;
22
+ keyToFilename;
23
+ constructor(opt = {}) {
24
+ this.dirname = (0, node_path.resolve)(node_process.default.cwd(), opt.path ?? ".fileStorage");
25
+ this.pretty = !!opt.pretty;
26
+ this.extension = opt.extension ?? ".json";
27
+ if (opt.extension && !this.extension.startsWith(".")) this.extension = `.${this.extension}`;
28
+ this.extensionLength = this.extension.length;
29
+ this.objectToString = opt.objectToString ?? ((data) => {
30
+ return this.pretty ? require_common_data_json.jsonStringifySafe(data, null, 2) : require_common_data_json.jsonStringifySafe(data);
31
+ });
32
+ this.objectFromString = opt.objectFromString ?? ((data) => {
33
+ try {
34
+ return JSON.parse(data);
35
+ } catch (err) {}
36
+ });
37
+ this.keyToFilename = opt.keyToFilename ?? require_common_data_path.toValidFilename;
38
+ }
39
+ setItem(key, value) {
40
+ this.store[key] = require_common_data_utils.cloneObject(value);
41
+ try {
42
+ const data = this.objectToString(value);
43
+ const path = this.getPath(key);
44
+ (0, node_fs.mkdirSync)((0, node_path.dirname)(path), { recursive: true });
45
+ (0, node_fs.writeFileSync)(path, data, "utf8");
46
+ } catch (err) {}
47
+ }
48
+ getPath(key) {
49
+ return (0, node_path.resolve)(this.dirname, this.keyToFilename(key) + this.extension);
50
+ }
51
+ getBuffer(key) {
52
+ const path = this.getPath(key);
53
+ return node_buffer.Buffer.from((0, node_fs.readFileSync)(path));
54
+ }
55
+ getItem(key) {
56
+ const value = this.store[key];
57
+ if (value === null) return;
58
+ if (value != null) return require_common_data_utils.cloneObject(value);
59
+ try {
60
+ const data = (0, node_fs.readFileSync)(this.getPath(key), "utf8");
61
+ if (data != null) {
62
+ const value = this.objectFromString(data);
63
+ this.store[key] = value;
64
+ return value;
65
+ }
66
+ } catch (err) {
67
+ this.store[key] = null;
68
+ }
69
+ }
70
+ removeItem(key) {
71
+ delete this.store[key];
72
+ if (this.fileKeys != null) {
73
+ const index = this.fileKeys.indexOf(key);
74
+ if (index !== -1) this.fileKeys.splice(index, 1);
75
+ }
76
+ try {
77
+ (0, node_fs.unlinkSync)(this.getPath(key));
78
+ } catch (err) {}
79
+ }
80
+ clear() {
81
+ this.fileKeys = [];
82
+ this.store = {};
83
+ (0, node_fs.rmSync)(this.dirname, {
84
+ recursive: true,
85
+ force: true
86
+ });
87
+ }
88
+ allKeys() {
89
+ if (this.fileKeys == null) try {
90
+ this.fileKeys = (0, node_fs.readdirSync)(this.dirname, { withFileTypes: true }).filter((item) => !item.isDirectory() && item.name.endsWith(this.extension)).map((item) => item.name.slice(0, -this.extensionLength)) || [];
91
+ } catch (err) {}
92
+ const keys = [...this.fileKeys || []];
93
+ for (const key of Object.keys(this.store)) if (!keys.includes(key)) keys.push(key);
94
+ keys.sort();
95
+ return keys;
96
+ }
97
+ };
98
+
99
+ //#endregion
100
+ exports.FileStorage = FileStorage;
2
101
  //# sourceMappingURL=filestorage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"filestorage.cjs","names":["process","jsonStringifySafe","toValidFilename","cloneObject","Buffer"],"sources":["../../src/node/filestorage.ts"],"sourcesContent":["import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"],"mappings":"4UAkBA,IAAa,EAAb,KAA+D,CAC7D,MAA0C,EAAE,CAC5C,QACA,SAA8B,IAAA,GAC9B,OAAiB,GACjB,UACA,gBACA,iBACA,eACA,cAEA,YAAY,EAA0B,EAAE,CAAE,CACxC,KAAK,SAAA,EAAA,EAAA,SAAkBA,EAAAA,QAAQ,KAAK,CAAE,EAAI,MAAQ,eAAe,CACjE,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,UAAY,EAAI,WAAa,QAE9B,EAAI,WAAa,CAAC,KAAK,UAAU,WAAW,IAAI,GAClD,KAAK,UAAY,IAAI,KAAK,aAE5B,KAAK,gBAAkB,KAAK,UAAU,OAEtC,KAAK,eAAiB,EAAI,iBAAoB,GACrC,KAAK,OACRC,EAAAA,kBAAkB,EAAM,KAAM,EAAE,CAChCA,EAAAA,kBAAkB,EAAK,EAG7B,KAAK,iBAAmB,EAAI,mBAAsB,GAAiB,CACjE,GAAI,CACF,OAAO,KAAK,MAAM,EAAK,MAEb,KAKd,KAAK,cAAgB,EAAI,eAAiBC,EAAAA,gBAG5C,QAAQ,EAAa,EAAgB,CACnC,KAAK,MAAM,GAAOC,EAAAA,YAAY,EAAM,CACpC,GAAI,CACF,IAAM,EAAO,KAAK,eAAe,EAAM,CACjC,EAAO,KAAK,QAAQ,EAAI,EAC9B,EAAA,EAAA,YAAA,EAAA,EAAA,SAAkB,EAAK,CAAE,CAAE,UAAW,GAAM,CAAC,EAC7C,EAAA,EAAA,eAAc,EAAM,EAAM,OAAO,MAEvB,GAKd,QAAQ,EAAqB,CAC3B,OAAA,EAAA,EAAA,SAAe,KAAK,QAAS,KAAK,cAAc,EAAI,CAAG,KAAK,UAAU,CAGxE,UAAU,EAAkB,CAC1B,IAAM,EAAO,KAAK,QAAQ,EAAI,CAC9B,OAAOC,EAAAA,OAAO,MAAA,EAAA,EAAA,cAAkB,EAAK,CAAC,CAGxC,QAAQ,EAA4B,CAClC,IAAM,EAAQ,KAAK,MAAM,GAGrB,OAAU,KAGd,IAAI,GAAS,KACX,OAAOD,EAAAA,YAAY,EAAM,CAE3B,GAAI,CAEF,IAAM,GAAA,EAAA,EAAA,cADO,KAAK,QAAQ,EAAI,CACE,OAAO,CACvC,GAAI,GAAQ,KAAM,CAChB,IAAM,EAAQ,KAAK,iBAAiB,EAAK,CAEzC,MADA,MAAK,MAAM,GAAO,EACX,QAGC,CAEV,KAAK,MAAM,GAAO,OAItB,WAAW,EAAmB,CAE5B,GADA,OAAO,KAAK,MAAM,GACd,KAAK,UAAY,KAAM,CACzB,IAAM,EAAgB,KAAK,SAAS,QAAQ,EAAI,CAC5C,IAAU,IACZ,KAAK,SAAS,OAAO,EAAO,EAAE,CAElC,GAAI,EAEF,EAAA,EAAA,YADa,KAAK,QAAQ,EAAI,CACd,MAEN,GAGd,OAAc,CACZ,KAAK,SAAW,EAAE,CAClB,KAAK,MAAQ,EAAE,EACf,EAAA,EAAA,QAAO,KAAK,QAAS,CAAE,UAAW,GAAM,MAAO,GAAM,CAAC,CAGxD,SAAoB,CAClB,GAAI,KAAK,UAAY,KACnB,GAAI,CACF,KAAK,UAAA,EAAA,EAAA,aACW,KAAK,QAAS,CAAE,cAAe,GAAM,CAAC,CACjD,OACC,GACE,CAAC,EAAK,aAAa,EAAI,EAAK,KAAK,SAAS,KAAK,UAAU,CAC5D,CACA,IAAI,GAAQ,EAAK,KAAK,MAAM,EAAG,CAAC,KAAK,gBAAgB,CAAC,EAAI,EAAE,MAEvD,EAEd,IAAM,EAAO,CAAC,GAAI,KAAK,UAAY,EAAE,CAAE,CACvC,IAAK,IAAM,KAAO,OAAO,KAAK,KAAK,MAAM,CAClC,EAAK,SAAS,EAAI,EACrB,EAAK,KAAK,EAAI,CAGlB,OADA,EAAK,MAAM,CACJ"}
1
+ {"version":3,"file":"filestorage.cjs","names":["process","jsonStringifySafe","toValidFilename","cloneObject","Buffer"],"sources":["../../src/node/filestorage.ts"],"sourcesContent":["import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"],"mappings":";;;;;;;;;;;;AAkBA,IAAa,cAAb,MAA+D;CAC7D,AAAQ,QAAkC,EAAE;CAC5C,AAAQ;CACR,AAAQ,WAAsB;CAC9B,AAAQ,SAAS;CACjB,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YAAY,MAA0B,EAAE,EAAE;AACxC,OAAK,iCAAkBA,qBAAQ,KAAK,EAAE,IAAI,QAAQ,eAAe;AACjE,OAAK,SAAS,CAAC,CAAC,IAAI;AACpB,OAAK,YAAY,IAAI,aAAa;AAElC,MAAI,IAAI,aAAa,CAAC,KAAK,UAAU,WAAW,IAAI,CAClD,MAAK,YAAY,IAAI,KAAK;AAE5B,OAAK,kBAAkB,KAAK,UAAU;AAEtC,OAAK,iBAAiB,IAAI,oBAAoB,SAAsB;AAClE,UAAO,KAAK,SACRC,2CAAkB,MAAM,MAAM,EAAE,GAChCA,2CAAkB,KAAK;;AAG7B,OAAK,mBAAmB,IAAI,sBAAsB,SAAiB;AACjE,OAAI;AACF,WAAO,KAAK,MAAM,KAAK;YAElB,KAAK;;AAKd,OAAK,gBAAgB,IAAI,iBAAiBC;;CAG5C,QAAQ,KAAa,OAAgB;AACnC,OAAK,MAAM,OAAOC,sCAAY,MAAM;AACpC,MAAI;GACF,MAAM,OAAO,KAAK,eAAe,MAAM;GACvC,MAAM,OAAO,KAAK,QAAQ,IAAI;AAC9B,iDAAkB,KAAK,EAAE,EAAE,WAAW,MAAM,CAAC;AAC7C,8BAAc,MAAM,MAAM,OAAO;WAE5B,KAAK;;CAKd,QAAQ,KAAqB;AAC3B,gCAAe,KAAK,SAAS,KAAK,cAAc,IAAI,GAAG,KAAK,UAAU;;CAGxE,UAAU,KAAkB;EAC1B,MAAM,OAAO,KAAK,QAAQ,IAAI;AAC9B,SAAOC,mBAAO,+BAAkB,KAAK,CAAC;;CAGxC,QAAQ,KAA4B;EAClC,MAAM,QAAQ,KAAK,MAAM;AAGzB,MAAI,UAAU,KACZ;AAEF,MAAI,SAAS,KACX,QAAOD,sCAAY,MAAM;AAE3B,MAAI;GAEF,MAAM,iCADO,KAAK,QAAQ,IAAI,EACE,OAAO;AACvC,OAAI,QAAQ,MAAM;IAChB,MAAM,QAAQ,KAAK,iBAAiB,KAAK;AACzC,SAAK,MAAM,OAAO;AAClB,WAAO;;WAGJ,KAAK;AAEV,QAAK,MAAM,OAAO;;;CAItB,WAAW,KAAmB;AAC5B,SAAO,KAAK,MAAM;AAClB,MAAI,KAAK,YAAY,MAAM;GACzB,MAAM,QAAgB,KAAK,SAAS,QAAQ,IAAI;AAChD,OAAI,UAAU,GACZ,MAAK,SAAS,OAAO,OAAO,EAAE;;AAElC,MAAI;AAEF,2BADa,KAAK,QAAQ,IAAI,CACd;WAEX,KAAK;;CAGd,QAAc;AACZ,OAAK,WAAW,EAAE;AAClB,OAAK,QAAQ,EAAE;AACf,sBAAO,KAAK,SAAS;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC;;CAGxD,UAAoB;AAClB,MAAI,KAAK,YAAY,KACnB,KAAI;AACF,QAAK,oCACW,KAAK,SAAS,EAAE,eAAe,MAAM,CAAC,CACjD,QACC,SACE,CAAC,KAAK,aAAa,IAAI,KAAK,KAAK,SAAS,KAAK,UAAU,CAC5D,CACA,KAAI,SAAQ,KAAK,KAAK,MAAM,GAAG,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE;WAE5D,KAAK;EAEd,MAAM,OAAO,CAAC,GAAI,KAAK,YAAY,EAAE,CAAE;AACvC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,MAAM,CACvC,KAAI,CAAC,KAAK,SAAS,IAAI,CACrB,MAAK,KAAK,IAAI;AAElB,OAAK,MAAM;AACX,SAAO"}
@@ -1,2 +1,98 @@
1
- import{jsonStringifySafe as e}from"../common/data/json.mjs";import{cloneObject as t}from"../common/data/utils.mjs";import{toValidFilename as n}from"../common/data/path.mjs";import r from"node:process";import{mkdirSync as i,readFileSync as a,readdirSync as o,rmSync as s,unlinkSync as c,writeFileSync as l}from"node:fs";import{dirname as u,resolve as d}from"node:path";import{Buffer as f}from"node:buffer";var p=class{store={};dirname;fileKeys=void 0;pretty=!1;extension;extensionLength;objectFromString;objectToString;keyToFilename;constructor(t={}){this.dirname=d(r.cwd(),t.path??`.fileStorage`),this.pretty=!!t.pretty,this.extension=t.extension??`.json`,t.extension&&!this.extension.startsWith(`.`)&&(this.extension=`.${this.extension}`),this.extensionLength=this.extension.length,this.objectToString=t.objectToString??(t=>this.pretty?e(t,null,2):e(t)),this.objectFromString=t.objectFromString??(e=>{try{return JSON.parse(e)}catch{}}),this.keyToFilename=t.keyToFilename??n}setItem(e,n){this.store[e]=t(n);try{let t=this.objectToString(n),r=this.getPath(e);i(u(r),{recursive:!0}),l(r,t,`utf8`)}catch{}}getPath(e){return d(this.dirname,this.keyToFilename(e)+this.extension)}getBuffer(e){let t=this.getPath(e);return f.from(a(t))}getItem(e){let n=this.store[e];if(n!==null){if(n!=null)return t(n);try{let t=a(this.getPath(e),`utf8`);if(t!=null){let n=this.objectFromString(t);return this.store[e]=n,n}}catch{this.store[e]=null}}}removeItem(e){if(delete this.store[e],this.fileKeys!=null){let t=this.fileKeys.indexOf(e);t!==-1&&this.fileKeys.splice(t,1)}try{c(this.getPath(e))}catch{}}clear(){this.fileKeys=[],this.store={},s(this.dirname,{recursive:!0,force:!0})}allKeys(){if(this.fileKeys==null)try{this.fileKeys=o(this.dirname,{withFileTypes:!0}).filter(e=>!e.isDirectory()&&e.name.endsWith(this.extension)).map(e=>e.name.slice(0,-this.extensionLength))||[]}catch{}let e=[...this.fileKeys||[]];for(let t of Object.keys(this.store))e.includes(t)||e.push(t);return e.sort(),e}};export{p as FileStorage};
1
+ import { jsonStringifySafe } from "../common/data/json.mjs";
2
+ import { cloneObject } from "../common/data/utils.mjs";
3
+ import { toValidFilename } from "../common/data/path.mjs";
4
+ import process from "node:process";
5
+ import { mkdirSync, readFileSync, readdirSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
6
+ import { dirname, resolve } from "node:path";
7
+ import { Buffer } from "node:buffer";
8
+
9
+ //#region src/node/filestorage.ts
10
+ var FileStorage = class {
11
+ store = {};
12
+ dirname;
13
+ fileKeys = void 0;
14
+ pretty = false;
15
+ extension;
16
+ extensionLength;
17
+ objectFromString;
18
+ objectToString;
19
+ keyToFilename;
20
+ constructor(opt = {}) {
21
+ this.dirname = resolve(process.cwd(), opt.path ?? ".fileStorage");
22
+ this.pretty = !!opt.pretty;
23
+ this.extension = opt.extension ?? ".json";
24
+ if (opt.extension && !this.extension.startsWith(".")) this.extension = `.${this.extension}`;
25
+ this.extensionLength = this.extension.length;
26
+ this.objectToString = opt.objectToString ?? ((data) => {
27
+ return this.pretty ? jsonStringifySafe(data, null, 2) : jsonStringifySafe(data);
28
+ });
29
+ this.objectFromString = opt.objectFromString ?? ((data) => {
30
+ try {
31
+ return JSON.parse(data);
32
+ } catch (err) {}
33
+ });
34
+ this.keyToFilename = opt.keyToFilename ?? toValidFilename;
35
+ }
36
+ setItem(key, value) {
37
+ this.store[key] = cloneObject(value);
38
+ try {
39
+ const data = this.objectToString(value);
40
+ const path = this.getPath(key);
41
+ mkdirSync(dirname(path), { recursive: true });
42
+ writeFileSync(path, data, "utf8");
43
+ } catch (err) {}
44
+ }
45
+ getPath(key) {
46
+ return resolve(this.dirname, this.keyToFilename(key) + this.extension);
47
+ }
48
+ getBuffer(key) {
49
+ const path = this.getPath(key);
50
+ return Buffer.from(readFileSync(path));
51
+ }
52
+ getItem(key) {
53
+ const value = this.store[key];
54
+ if (value === null) return;
55
+ if (value != null) return cloneObject(value);
56
+ try {
57
+ const data = readFileSync(this.getPath(key), "utf8");
58
+ if (data != null) {
59
+ const value = this.objectFromString(data);
60
+ this.store[key] = value;
61
+ return value;
62
+ }
63
+ } catch (err) {
64
+ this.store[key] = null;
65
+ }
66
+ }
67
+ removeItem(key) {
68
+ delete this.store[key];
69
+ if (this.fileKeys != null) {
70
+ const index = this.fileKeys.indexOf(key);
71
+ if (index !== -1) this.fileKeys.splice(index, 1);
72
+ }
73
+ try {
74
+ unlinkSync(this.getPath(key));
75
+ } catch (err) {}
76
+ }
77
+ clear() {
78
+ this.fileKeys = [];
79
+ this.store = {};
80
+ rmSync(this.dirname, {
81
+ recursive: true,
82
+ force: true
83
+ });
84
+ }
85
+ allKeys() {
86
+ if (this.fileKeys == null) try {
87
+ this.fileKeys = readdirSync(this.dirname, { withFileTypes: true }).filter((item) => !item.isDirectory() && item.name.endsWith(this.extension)).map((item) => item.name.slice(0, -this.extensionLength)) || [];
88
+ } catch (err) {}
89
+ const keys = [...this.fileKeys || []];
90
+ for (const key of Object.keys(this.store)) if (!keys.includes(key)) keys.push(key);
91
+ keys.sort();
92
+ return keys;
93
+ }
94
+ };
95
+
96
+ //#endregion
97
+ export { FileStorage };
2
98
  //# sourceMappingURL=filestorage.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"filestorage.mjs","names":[],"sources":["../../src/node/filestorage.ts"],"sourcesContent":["import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"],"mappings":"qZAkBA,IAAa,EAAb,KAA+D,CAC7D,MAA0C,EAAE,CAC5C,QACA,SAA8B,IAAA,GAC9B,OAAiB,GACjB,UACA,gBACA,iBACA,eACA,cAEA,YAAY,EAA0B,EAAE,CAAE,CACxC,KAAK,QAAU,EAAQ,EAAQ,KAAK,CAAE,EAAI,MAAQ,eAAe,CACjE,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,UAAY,EAAI,WAAa,QAE9B,EAAI,WAAa,CAAC,KAAK,UAAU,WAAW,IAAI,GAClD,KAAK,UAAY,IAAI,KAAK,aAE5B,KAAK,gBAAkB,KAAK,UAAU,OAEtC,KAAK,eAAiB,EAAI,iBAAoB,GACrC,KAAK,OACR,EAAkB,EAAM,KAAM,EAAE,CAChC,EAAkB,EAAK,EAG7B,KAAK,iBAAmB,EAAI,mBAAsB,GAAiB,CACjE,GAAI,CACF,OAAO,KAAK,MAAM,EAAK,MAEb,KAKd,KAAK,cAAgB,EAAI,eAAiB,EAG5C,QAAQ,EAAa,EAAgB,CACnC,KAAK,MAAM,GAAO,EAAY,EAAM,CACpC,GAAI,CACF,IAAM,EAAO,KAAK,eAAe,EAAM,CACjC,EAAO,KAAK,QAAQ,EAAI,CAC9B,EAAU,EAAQ,EAAK,CAAE,CAAE,UAAW,GAAM,CAAC,CAC7C,EAAc,EAAM,EAAM,OAAO,MAEvB,GAKd,QAAQ,EAAqB,CAC3B,OAAO,EAAQ,KAAK,QAAS,KAAK,cAAc,EAAI,CAAG,KAAK,UAAU,CAGxE,UAAU,EAAkB,CAC1B,IAAM,EAAO,KAAK,QAAQ,EAAI,CAC9B,OAAO,EAAO,KAAK,EAAa,EAAK,CAAC,CAGxC,QAAQ,EAA4B,CAClC,IAAM,EAAQ,KAAK,MAAM,GAGrB,OAAU,KAGd,IAAI,GAAS,KACX,OAAO,EAAY,EAAM,CAE3B,GAAI,CAEF,IAAM,EAAO,EADA,KAAK,QAAQ,EAAI,CACE,OAAO,CACvC,GAAI,GAAQ,KAAM,CAChB,IAAM,EAAQ,KAAK,iBAAiB,EAAK,CAEzC,MADA,MAAK,MAAM,GAAO,EACX,QAGC,CAEV,KAAK,MAAM,GAAO,OAItB,WAAW,EAAmB,CAE5B,GADA,OAAO,KAAK,MAAM,GACd,KAAK,UAAY,KAAM,CACzB,IAAM,EAAgB,KAAK,SAAS,QAAQ,EAAI,CAC5C,IAAU,IACZ,KAAK,SAAS,OAAO,EAAO,EAAE,CAElC,GAAI,CAEF,EADa,KAAK,QAAQ,EAAI,CACd,MAEN,GAGd,OAAc,CACZ,KAAK,SAAW,EAAE,CAClB,KAAK,MAAQ,EAAE,CACf,EAAO,KAAK,QAAS,CAAE,UAAW,GAAM,MAAO,GAAM,CAAC,CAGxD,SAAoB,CAClB,GAAI,KAAK,UAAY,KACnB,GAAI,CACF,KAAK,SACD,EAAY,KAAK,QAAS,CAAE,cAAe,GAAM,CAAC,CACjD,OACC,GACE,CAAC,EAAK,aAAa,EAAI,EAAK,KAAK,SAAS,KAAK,UAAU,CAC5D,CACA,IAAI,GAAQ,EAAK,KAAK,MAAM,EAAG,CAAC,KAAK,gBAAgB,CAAC,EAAI,EAAE,MAEvD,EAEd,IAAM,EAAO,CAAC,GAAI,KAAK,UAAY,EAAE,CAAE,CACvC,IAAK,IAAM,KAAO,OAAO,KAAK,KAAK,MAAM,CAClC,EAAK,SAAS,EAAI,EACrB,EAAK,KAAK,EAAI,CAGlB,OADA,EAAK,MAAM,CACJ"}
1
+ {"version":3,"file":"filestorage.mjs","names":[],"sources":["../../src/node/filestorage.ts"],"sourcesContent":["import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAa,cAAb,MAA+D;CAC7D,AAAQ,QAAkC,EAAE;CAC5C,AAAQ;CACR,AAAQ,WAAsB;CAC9B,AAAQ,SAAS;CACjB,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YAAY,MAA0B,EAAE,EAAE;AACxC,OAAK,UAAU,QAAQ,QAAQ,KAAK,EAAE,IAAI,QAAQ,eAAe;AACjE,OAAK,SAAS,CAAC,CAAC,IAAI;AACpB,OAAK,YAAY,IAAI,aAAa;AAElC,MAAI,IAAI,aAAa,CAAC,KAAK,UAAU,WAAW,IAAI,CAClD,MAAK,YAAY,IAAI,KAAK;AAE5B,OAAK,kBAAkB,KAAK,UAAU;AAEtC,OAAK,iBAAiB,IAAI,oBAAoB,SAAsB;AAClE,UAAO,KAAK,SACR,kBAAkB,MAAM,MAAM,EAAE,GAChC,kBAAkB,KAAK;;AAG7B,OAAK,mBAAmB,IAAI,sBAAsB,SAAiB;AACjE,OAAI;AACF,WAAO,KAAK,MAAM,KAAK;YAElB,KAAK;;AAKd,OAAK,gBAAgB,IAAI,iBAAiB;;CAG5C,QAAQ,KAAa,OAAgB;AACnC,OAAK,MAAM,OAAO,YAAY,MAAM;AACpC,MAAI;GACF,MAAM,OAAO,KAAK,eAAe,MAAM;GACvC,MAAM,OAAO,KAAK,QAAQ,IAAI;AAC9B,aAAU,QAAQ,KAAK,EAAE,EAAE,WAAW,MAAM,CAAC;AAC7C,iBAAc,MAAM,MAAM,OAAO;WAE5B,KAAK;;CAKd,QAAQ,KAAqB;AAC3B,SAAO,QAAQ,KAAK,SAAS,KAAK,cAAc,IAAI,GAAG,KAAK,UAAU;;CAGxE,UAAU,KAAkB;EAC1B,MAAM,OAAO,KAAK,QAAQ,IAAI;AAC9B,SAAO,OAAO,KAAK,aAAa,KAAK,CAAC;;CAGxC,QAAQ,KAA4B;EAClC,MAAM,QAAQ,KAAK,MAAM;AAGzB,MAAI,UAAU,KACZ;AAEF,MAAI,SAAS,KACX,QAAO,YAAY,MAAM;AAE3B,MAAI;GAEF,MAAM,OAAO,aADA,KAAK,QAAQ,IAAI,EACE,OAAO;AACvC,OAAI,QAAQ,MAAM;IAChB,MAAM,QAAQ,KAAK,iBAAiB,KAAK;AACzC,SAAK,MAAM,OAAO;AAClB,WAAO;;WAGJ,KAAK;AAEV,QAAK,MAAM,OAAO;;;CAItB,WAAW,KAAmB;AAC5B,SAAO,KAAK,MAAM;AAClB,MAAI,KAAK,YAAY,MAAM;GACzB,MAAM,QAAgB,KAAK,SAAS,QAAQ,IAAI;AAChD,OAAI,UAAU,GACZ,MAAK,SAAS,OAAO,OAAO,EAAE;;AAElC,MAAI;AAEF,cADa,KAAK,QAAQ,IAAI,CACd;WAEX,KAAK;;CAGd,QAAc;AACZ,OAAK,WAAW,EAAE;AAClB,OAAK,QAAQ,EAAE;AACf,SAAO,KAAK,SAAS;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC;;CAGxD,UAAoB;AAClB,MAAI,KAAK,YAAY,KACnB,KAAI;AACF,QAAK,WACD,YAAY,KAAK,SAAS,EAAE,eAAe,MAAM,CAAC,CACjD,QACC,SACE,CAAC,KAAK,aAAa,IAAI,KAAK,KAAK,SAAS,KAAK,UAAU,CAC5D,CACA,KAAI,SAAQ,KAAK,KAAK,MAAM,GAAG,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE;WAE5D,KAAK;EAEd,MAAM,OAAO,CAAC,GAAI,KAAK,YAAY,EAAE,CAAE;AACvC,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,MAAM,CACvC,KAAI,CAAC,KAAK,SAAS,IAAI,CACrB,MAAK,KAAK,IAAI;AAElB,OAAK,MAAM;AACX,SAAO"}
package/dist/node/fs.cjs CHANGED
@@ -1,2 +1,120 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-D-qHiVGv.cjs`),t=require(`../common/data/json.cjs`),n=require(`../common/data/is.cjs`),r=require(`../bin-Ce3i6ABn.cjs`);let i=require(`node:process`);i=e.n(i);let a=require(`node:path`),o=require(`node:fs/promises`);function s(e){let t=(0,a.normalize)(e),n=i.default.env.HOME;return n&&t.startsWith(n)?`~${t.slice(n.length)}`:t}async function c(e){try{await(0,o.stat)(e)}catch{return!1}return!0}async function l(e){try{return(await(0,o.stat)(e)).isFile()}catch{return!1}}async function u(e){try{return(await(0,o.stat)(e)).isDirectory()}catch{return!1}}function d(e){return e.startsWith(`.`)||e.includes(`/.`)}async function f(...e){let t=(0,a.join)(...e);return await u(t)||await(0,o.mkdir)(t,{recursive:!0}),t}async function p(...e){let t=(0,a.dirname)((0,a.join)(...e));return await u(t)||await(0,o.mkdir)(t,{recursive:!0}),t}async function m(...e){let t=(0,a.join)(...e);return await u(t)&&await(0,o.rm)(t,{recursive:!0}),t}async function h(...e){let t=(0,a.join)(...e);if(await l(t))return await(0,o.readFile)(t,`utf-8`)}async function g(...e){let t=await h(...e);if(t!=null)try{return JSON.parse(t)}catch{}}async function _(...e){let t=(0,a.join)(...e);if(await l(t))return r.v(await(0,o.readFile)(t))}async function v(...e){let t=(0,a.join)(...e);if(await l(t))return await(0,o.readFile)(t)}async function y(e,t,n=!1){n&&await p(e),await(0,o.writeFile)(e,t,`utf-8`)}async function b(e,t,r=!1){r&&await p(e),await(0,o.writeFile)(e,n.isUint8Array(t)?t:JSON.stringify(t))}async function x(e,t,n={}){let{createFolders:r=!1}=n;r&&await p(e),await(0,o.writeFile)(e,t)}async function S(e,n,r={}){let{createFolders:i=!1,pretty:a=!1}=r;await y(e,t.jsonStringifySorted(n,a?2:void 0),i)}exports.ensureFolder=f,exports.ensureFolderForFile=p,exports.exists=c,exports.isFile=l,exports.isFolder=u,exports.isHiddenPath=d,exports.readBin=_,exports.readData=v,exports.readJson=g,exports.readText=h,exports.removeFolder=m,exports.toHumanReadableFilePath=s,exports.writeBin=x,exports.writeData=b,exports.writeJson=S,exports.writeText=y;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../chunk-uaV2rQ02.cjs');
3
+ const require_common_data_json = require('../common/data/json.cjs');
4
+ const require_common_data_is = require('../common/data/is.cjs');
5
+ const require_bin = require('../bin-Ddaz2lxM.cjs');
6
+ let node_process = require("node:process");
7
+ node_process = require_chunk.__toESM(node_process, 1);
8
+ let node_path = require("node:path");
9
+ let node_fs_promises = require("node:fs/promises");
10
+
11
+ //#region src/node/fs.ts
12
+ /** Try to use `~` for HOME folder if possible */
13
+ function toHumanReadableFilePath(path) {
14
+ const p = (0, node_path.normalize)(path);
15
+ const h = node_process.default.env.HOME;
16
+ if (h && p.startsWith(h)) return `~${p.slice(h.length)}`;
17
+ return p;
18
+ }
19
+ /**
20
+ * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.
21
+ * @deprecated
22
+ */
23
+ async function exists(path) {
24
+ try {
25
+ await (0, node_fs_promises.stat)(path);
26
+ } catch (err) {
27
+ return false;
28
+ }
29
+ return true;
30
+ }
31
+ async function isFile(path) {
32
+ try {
33
+ return (await (0, node_fs_promises.stat)(path)).isFile();
34
+ } catch (err) {
35
+ return false;
36
+ }
37
+ }
38
+ async function isFolder(path) {
39
+ try {
40
+ return (await (0, node_fs_promises.stat)(path)).isDirectory();
41
+ } catch (err) {
42
+ return false;
43
+ }
44
+ }
45
+ function isHiddenPath(path) {
46
+ return path.startsWith(".") || path.includes("/.");
47
+ }
48
+ /** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */
49
+ async function ensureFolder(...parts) {
50
+ const path = (0, node_path.join)(...parts);
51
+ if (!await isFolder(path)) await (0, node_fs_promises.mkdir)(path, { recursive: true });
52
+ return path;
53
+ }
54
+ /** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */
55
+ async function ensureFolderForFile(...parts) {
56
+ const path = (0, node_path.dirname)((0, node_path.join)(...parts));
57
+ if (!await isFolder(path)) await (0, node_fs_promises.mkdir)(path, { recursive: true });
58
+ return path;
59
+ }
60
+ async function removeFolder(...parts) {
61
+ const path = (0, node_path.join)(...parts);
62
+ if (await isFolder(path)) await (0, node_fs_promises.rm)(path, { recursive: true });
63
+ return path;
64
+ }
65
+ async function readText(...parts) {
66
+ const path = (0, node_path.join)(...parts);
67
+ if (await isFile(path)) return await (0, node_fs_promises.readFile)(path, "utf-8");
68
+ }
69
+ async function readJson(...parts) {
70
+ const content = await readText(...parts);
71
+ if (content != null) try {
72
+ return JSON.parse(content);
73
+ } catch (err) {}
74
+ }
75
+ async function readBin(...parts) {
76
+ const path = (0, node_path.join)(...parts);
77
+ if (await isFile(path)) return require_bin.toUint8Array(await (0, node_fs_promises.readFile)(path));
78
+ }
79
+ /** @deprecated use readJson or readBin */
80
+ async function readData(...parts) {
81
+ const path = (0, node_path.join)(...parts);
82
+ if (await isFile(path)) return await (0, node_fs_promises.readFile)(path);
83
+ }
84
+ async function writeText(path, content, createFolders = false) {
85
+ if (createFolders) await ensureFolderForFile(path);
86
+ await (0, node_fs_promises.writeFile)(path, content, "utf-8");
87
+ }
88
+ /** @deprecated use writeBin or writeJson */
89
+ async function writeData(path, content, createFolders = false) {
90
+ if (createFolders) await ensureFolderForFile(path);
91
+ await (0, node_fs_promises.writeFile)(path, require_common_data_is.isUint8Array(content) ? content : JSON.stringify(content));
92
+ }
93
+ async function writeBin(path, content, info = {}) {
94
+ const { createFolders = false } = info;
95
+ if (createFolders) await ensureFolderForFile(path);
96
+ await (0, node_fs_promises.writeFile)(path, content);
97
+ }
98
+ async function writeJson(path, content, info = {}) {
99
+ const { createFolders = false, pretty = false } = info;
100
+ await writeText(path, require_common_data_json.jsonStringifySorted(content, pretty ? 2 : void 0), createFolders);
101
+ }
102
+
103
+ //#endregion
104
+ exports.ensureFolder = ensureFolder;
105
+ exports.ensureFolderForFile = ensureFolderForFile;
106
+ exports.exists = exists;
107
+ exports.isFile = isFile;
108
+ exports.isFolder = isFolder;
109
+ exports.isHiddenPath = isHiddenPath;
110
+ exports.readBin = readBin;
111
+ exports.readData = readData;
112
+ exports.readJson = readJson;
113
+ exports.readText = readText;
114
+ exports.removeFolder = removeFolder;
115
+ exports.toHumanReadableFilePath = toHumanReadableFilePath;
116
+ exports.writeBin = writeBin;
117
+ exports.writeData = writeData;
118
+ exports.writeJson = writeJson;
119
+ exports.writeText = writeText;
2
120
  //# sourceMappingURL=fs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.cjs","names":["process","toUint8Array","isUint8Array","jsonStringifySorted"],"sources":["../../src/node/fs.ts"],"sourcesContent":["import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname, join as joinPath, normalize } from 'node:path'\nimport process from 'node:process'\nimport { toUint8Array } from '../common/data/bin'\nimport { isUint8Array } from '../common/data/is'\nimport { jsonStringifySorted } from '../common/data/json'\n\n/** Try to use `~` for HOME folder if possible */\nexport function toHumanReadableFilePath(path: string) {\n const p = normalize(path)\n const h = process.env.HOME\n if (h && p.startsWith(h))\n return `~${p.slice(h.length)}`\n\n return p\n}\n\n/**\n * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.\n * @deprecated\n */\nexport async function exists(path: string): Promise<boolean> {\n try {\n await stat(path)\n }\n catch (err) {\n return false\n }\n return true\n}\n\nexport async function isFile(path: string) {\n try {\n const s = await stat(path)\n return s.isFile()\n }\n catch (err) {\n return false\n }\n}\n\nexport async function isFolder(path: string) {\n try {\n const s = await stat(path)\n return s.isDirectory()\n }\n catch (err) {\n return false\n }\n}\n\nexport function isHiddenPath(path: string): boolean {\n return path.startsWith('.') || path.includes('/.')\n}\n\n/** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */\nexport async function ensureFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\n/** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */\nexport async function ensureFolderForFile(...parts: string[]): Promise<string> {\n const path = dirname(joinPath(...parts))\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\nexport async function removeFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (await isFolder(path))\n await rm(path, { recursive: true })\n return path\n}\n\nexport async function readText(...parts: string[]): Promise<string | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path, 'utf-8')\n}\n\nexport async function readJson<T = object>(...parts: string[]): Promise<T | undefined> {\n const content = await readText(...parts)\n if (content != null) {\n try {\n return JSON.parse(content)\n }\n catch (err) { }\n }\n}\n\nexport async function readBin(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return toUint8Array(await readFile(path))\n}\n\n/** @deprecated use readJson or readBin */\nexport async function readData(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path)\n}\n\nexport async function writeText(path: string, content: string, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content, 'utf-8')\n}\n\n/** @deprecated use writeBin or writeJson */\nexport async function writeData(path: string, content: object | Uint8Array, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n const data = isUint8Array(content) ? content : JSON.stringify(content)\n await writeFile(path, data)\n}\n\nexport async function writeBin(path: string, content: Uint8Array, info: {\n createFolders?: boolean\n} = {}): Promise<void> {\n const { createFolders = false } = info\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content)\n}\n\nexport async function writeJson<T = object>(path: string, content: T, info: {\n createFolders?: boolean\n pretty?: boolean\n} = {}): Promise<void> {\n const { createFolders = false, pretty = false } = info\n await writeText(path, jsonStringifySorted(content, pretty ? 2 : undefined), createFolders)\n}\n"],"mappings":"qTAQA,SAAgB,EAAwB,EAAc,CACpD,IAAM,GAAA,EAAA,EAAA,WAAc,EAAK,CACnB,EAAIA,EAAAA,QAAQ,IAAI,KAItB,OAHI,GAAK,EAAE,WAAW,EAAE,CACf,IAAI,EAAE,MAAM,EAAE,OAAO,GAEvB,EAOT,eAAsB,EAAO,EAAgC,CAC3D,GAAI,CACF,MAAA,EAAA,EAAA,MAAW,EAAK,MAEN,CACV,MAAO,GAET,MAAO,GAGT,eAAsB,EAAO,EAAc,CACzC,GAAI,CAEF,OADU,MAAA,EAAA,EAAA,MAAW,EAAK,EACjB,QAAQ,MAEP,CACV,MAAO,IAIX,eAAsB,EAAS,EAAc,CAC3C,GAAI,CAEF,OADU,MAAA,EAAA,EAAA,MAAW,EAAK,EACjB,aAAa,MAEZ,CACV,MAAO,IAIX,SAAgB,EAAa,EAAuB,CAClD,OAAO,EAAK,WAAW,IAAI,EAAI,EAAK,SAAS,KAAK,CAIpD,eAAsB,EAAa,GAAG,EAAkC,CACtE,IAAM,GAAA,EAAA,EAAA,MAAgB,GAAG,EAAM,CAG/B,OAFM,MAAM,EAAS,EAAK,EACxB,MAAA,EAAA,EAAA,OAAY,EAAM,CAAE,UAAW,GAAM,CAAC,CACjC,EAIT,eAAsB,EAAoB,GAAG,EAAkC,CAC7E,IAAM,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAwB,GAAG,EAAM,CAAC,CAGxC,OAFM,MAAM,EAAS,EAAK,EACxB,MAAA,EAAA,EAAA,OAAY,EAAM,CAAE,UAAW,GAAM,CAAC,CACjC,EAGT,eAAsB,EAAa,GAAG,EAAkC,CACtE,IAAM,GAAA,EAAA,EAAA,MAAgB,GAAG,EAAM,CAG/B,OAFI,MAAM,EAAS,EAAK,EACtB,MAAA,EAAA,EAAA,IAAS,EAAM,CAAE,UAAW,GAAM,CAAC,CAC9B,EAGT,eAAsB,EAAS,GAAG,EAA8C,CAC9E,IAAM,GAAA,EAAA,EAAA,MAAgB,GAAG,EAAM,CAC/B,GAAI,MAAM,EAAO,EAAK,CACpB,OAAO,MAAA,EAAA,EAAA,UAAe,EAAM,QAAQ,CAGxC,eAAsB,EAAqB,GAAG,EAAyC,CACrF,IAAM,EAAU,MAAM,EAAS,GAAG,EAAM,CACxC,GAAI,GAAW,KACb,GAAI,CACF,OAAO,KAAK,MAAM,EAAQ,MAEhB,GAIhB,eAAsB,EAAQ,GAAG,EAAkD,CACjF,IAAM,GAAA,EAAA,EAAA,MAAgB,GAAG,EAAM,CAC/B,GAAI,MAAM,EAAO,EAAK,CACpB,OAAOC,EAAAA,EAAa,MAAA,EAAA,EAAA,UAAe,EAAK,CAAC,CAI7C,eAAsB,EAAS,GAAG,EAAkD,CAClF,IAAM,GAAA,EAAA,EAAA,MAAgB,GAAG,EAAM,CAC/B,GAAI,MAAM,EAAO,EAAK,CACpB,OAAO,MAAA,EAAA,EAAA,UAAe,EAAK,CAG/B,eAAsB,EAAU,EAAc,EAAiB,EAAgB,GAAsB,CAC/F,GACF,MAAM,EAAoB,EAAK,CACjC,MAAA,EAAA,EAAA,WAAgB,EAAM,EAAS,QAAQ,CAIzC,eAAsB,EAAU,EAAc,EAA8B,EAAgB,GAAsB,CAC5G,GACF,MAAM,EAAoB,EAAK,CAEjC,MAAA,EAAA,EAAA,WAAgB,EADHC,EAAAA,aAAa,EAAQ,CAAG,EAAU,KAAK,UAAU,EAAQ,CAC3C,CAG7B,eAAsB,EAAS,EAAc,EAAqB,EAE9D,EAAE,CAAiB,CACrB,GAAM,CAAE,gBAAgB,IAAU,EAC9B,GACF,MAAM,EAAoB,EAAK,CACjC,MAAA,EAAA,EAAA,WAAgB,EAAM,EAAQ,CAGhC,eAAsB,EAAsB,EAAc,EAAY,EAGlE,EAAE,CAAiB,CACrB,GAAM,CAAE,gBAAgB,GAAO,SAAS,IAAU,EAClD,MAAM,EAAU,EAAMC,EAAAA,oBAAoB,EAAS,EAAS,EAAI,IAAA,GAAU,CAAE,EAAc"}
1
+ {"version":3,"file":"fs.cjs","names":["process","toUint8Array","isUint8Array","jsonStringifySorted"],"sources":["../../src/node/fs.ts"],"sourcesContent":["import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname, join as joinPath, normalize } from 'node:path'\nimport process from 'node:process'\nimport { toUint8Array } from '../common/data/bin'\nimport { isUint8Array } from '../common/data/is'\nimport { jsonStringifySorted } from '../common/data/json'\n\n/** Try to use `~` for HOME folder if possible */\nexport function toHumanReadableFilePath(path: string) {\n const p = normalize(path)\n const h = process.env.HOME\n if (h && p.startsWith(h))\n return `~${p.slice(h.length)}`\n\n return p\n}\n\n/**\n * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.\n * @deprecated\n */\nexport async function exists(path: string): Promise<boolean> {\n try {\n await stat(path)\n }\n catch (err) {\n return false\n }\n return true\n}\n\nexport async function isFile(path: string) {\n try {\n const s = await stat(path)\n return s.isFile()\n }\n catch (err) {\n return false\n }\n}\n\nexport async function isFolder(path: string) {\n try {\n const s = await stat(path)\n return s.isDirectory()\n }\n catch (err) {\n return false\n }\n}\n\nexport function isHiddenPath(path: string): boolean {\n return path.startsWith('.') || path.includes('/.')\n}\n\n/** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */\nexport async function ensureFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\n/** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */\nexport async function ensureFolderForFile(...parts: string[]): Promise<string> {\n const path = dirname(joinPath(...parts))\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\nexport async function removeFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (await isFolder(path))\n await rm(path, { recursive: true })\n return path\n}\n\nexport async function readText(...parts: string[]): Promise<string | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path, 'utf-8')\n}\n\nexport async function readJson<T = object>(...parts: string[]): Promise<T | undefined> {\n const content = await readText(...parts)\n if (content != null) {\n try {\n return JSON.parse(content)\n }\n catch (err) { }\n }\n}\n\nexport async function readBin(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return toUint8Array(await readFile(path))\n}\n\n/** @deprecated use readJson or readBin */\nexport async function readData(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path)\n}\n\nexport async function writeText(path: string, content: string, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content, 'utf-8')\n}\n\n/** @deprecated use writeBin or writeJson */\nexport async function writeData(path: string, content: object | Uint8Array, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n const data = isUint8Array(content) ? content : JSON.stringify(content)\n await writeFile(path, data)\n}\n\nexport async function writeBin(path: string, content: Uint8Array, info: {\n createFolders?: boolean\n} = {}): Promise<void> {\n const { createFolders = false } = info\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content)\n}\n\nexport async function writeJson<T = object>(path: string, content: T, info: {\n createFolders?: boolean\n pretty?: boolean\n} = {}): Promise<void> {\n const { createFolders = false, pretty = false } = info\n await writeText(path, jsonStringifySorted(content, pretty ? 2 : undefined), createFolders)\n}\n"],"mappings":";;;;;;;;;;;;AAQA,SAAgB,wBAAwB,MAAc;CACpD,MAAM,6BAAc,KAAK;CACzB,MAAM,IAAIA,qBAAQ,IAAI;AACtB,KAAI,KAAK,EAAE,WAAW,EAAE,CACtB,QAAO,IAAI,EAAE,MAAM,EAAE,OAAO;AAE9B,QAAO;;;;;;AAOT,eAAsB,OAAO,MAAgC;AAC3D,KAAI;AACF,mCAAW,KAAK;UAEX,KAAK;AACV,SAAO;;AAET,QAAO;;AAGT,eAAsB,OAAO,MAAc;AACzC,KAAI;AAEF,UADU,iCAAW,KAAK,EACjB,QAAQ;UAEZ,KAAK;AACV,SAAO;;;AAIX,eAAsB,SAAS,MAAc;AAC3C,KAAI;AAEF,UADU,iCAAW,KAAK,EACjB,aAAa;UAEjB,KAAK;AACV,SAAO;;;AAIX,SAAgB,aAAa,MAAuB;AAClD,QAAO,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,KAAK;;;AAIpD,eAAsB,aAAa,GAAG,OAAkC;CACtE,MAAM,2BAAgB,GAAG,MAAM;AAC/B,KAAI,CAAE,MAAM,SAAS,KAAK,CACxB,mCAAY,MAAM,EAAE,WAAW,MAAM,CAAC;AACxC,QAAO;;;AAIT,eAAsB,oBAAoB,GAAG,OAAkC;CAC7E,MAAM,kDAAwB,GAAG,MAAM,CAAC;AACxC,KAAI,CAAE,MAAM,SAAS,KAAK,CACxB,mCAAY,MAAM,EAAE,WAAW,MAAM,CAAC;AACxC,QAAO;;AAGT,eAAsB,aAAa,GAAG,OAAkC;CACtE,MAAM,2BAAgB,GAAG,MAAM;AAC/B,KAAI,MAAM,SAAS,KAAK,CACtB,gCAAS,MAAM,EAAE,WAAW,MAAM,CAAC;AACrC,QAAO;;AAGT,eAAsB,SAAS,GAAG,OAA8C;CAC9E,MAAM,2BAAgB,GAAG,MAAM;AAC/B,KAAI,MAAM,OAAO,KAAK,CACpB,QAAO,qCAAe,MAAM,QAAQ;;AAGxC,eAAsB,SAAqB,GAAG,OAAyC;CACrF,MAAM,UAAU,MAAM,SAAS,GAAG,MAAM;AACxC,KAAI,WAAW,KACb,KAAI;AACF,SAAO,KAAK,MAAM,QAAQ;UAErB,KAAK;;AAIhB,eAAsB,QAAQ,GAAG,OAAkD;CACjF,MAAM,2BAAgB,GAAG,MAAM;AAC/B,KAAI,MAAM,OAAO,KAAK,CACpB,QAAOC,yBAAa,qCAAe,KAAK,CAAC;;;AAI7C,eAAsB,SAAS,GAAG,OAAkD;CAClF,MAAM,2BAAgB,GAAG,MAAM;AAC/B,KAAI,MAAM,OAAO,KAAK,CACpB,QAAO,qCAAe,KAAK;;AAG/B,eAAsB,UAAU,MAAc,SAAiB,gBAAgB,OAAsB;AACnG,KAAI,cACF,OAAM,oBAAoB,KAAK;AACjC,uCAAgB,MAAM,SAAS,QAAQ;;;AAIzC,eAAsB,UAAU,MAAc,SAA8B,gBAAgB,OAAsB;AAChH,KAAI,cACF,OAAM,oBAAoB,KAAK;AAEjC,uCAAgB,MADHC,oCAAa,QAAQ,GAAG,UAAU,KAAK,UAAU,QAAQ,CAC3C;;AAG7B,eAAsB,SAAS,MAAc,SAAqB,OAE9D,EAAE,EAAiB;CACrB,MAAM,EAAE,gBAAgB,UAAU;AAClC,KAAI,cACF,OAAM,oBAAoB,KAAK;AACjC,uCAAgB,MAAM,QAAQ;;AAGhC,eAAsB,UAAsB,MAAc,SAAY,OAGlE,EAAE,EAAiB;CACrB,MAAM,EAAE,gBAAgB,OAAO,SAAS,UAAU;AAClD,OAAM,UAAU,MAAMC,6CAAoB,SAAS,SAAS,IAAI,OAAU,EAAE,cAAc"}
package/dist/node/fs.mjs CHANGED
@@ -1,2 +1,102 @@
1
- import{jsonStringifySorted as e}from"../common/data/json.mjs";import{isUint8Array as t}from"../common/data/is.mjs";import{v as n}from"../bin-SPdenYkw.mjs";import r from"node:process";import{dirname as i,join as a,normalize as o}from"node:path";import{mkdir as s,readFile as c,rm as l,stat as u,writeFile as d}from"node:fs/promises";function f(e){let t=o(e),n=r.env.HOME;return n&&t.startsWith(n)?`~${t.slice(n.length)}`:t}async function p(e){try{await u(e)}catch{return!1}return!0}async function m(e){try{return(await u(e)).isFile()}catch{return!1}}async function h(e){try{return(await u(e)).isDirectory()}catch{return!1}}function g(e){return e.startsWith(`.`)||e.includes(`/.`)}async function _(...e){let t=a(...e);return await h(t)||await s(t,{recursive:!0}),t}async function v(...e){let t=i(a(...e));return await h(t)||await s(t,{recursive:!0}),t}async function y(...e){let t=a(...e);return await h(t)&&await l(t,{recursive:!0}),t}async function b(...e){let t=a(...e);if(await m(t))return await c(t,`utf-8`)}async function x(...e){let t=await b(...e);if(t!=null)try{return JSON.parse(t)}catch{}}async function S(...e){let t=a(...e);if(await m(t))return n(await c(t))}async function C(...e){let t=a(...e);if(await m(t))return await c(t)}async function w(e,t,n=!1){n&&await v(e),await d(e,t,`utf-8`)}async function T(e,n,r=!1){r&&await v(e),await d(e,t(n)?n:JSON.stringify(n))}async function E(e,t,n={}){let{createFolders:r=!1}=n;r&&await v(e),await d(e,t)}async function D(t,n,r={}){let{createFolders:i=!1,pretty:a=!1}=r;await w(t,e(n,a?2:void 0),i)}export{_ as ensureFolder,v as ensureFolderForFile,p as exists,m as isFile,h as isFolder,g as isHiddenPath,S as readBin,C as readData,x as readJson,b as readText,y as removeFolder,f as toHumanReadableFilePath,E as writeBin,T as writeData,D as writeJson,w as writeText};
1
+ import { jsonStringifySorted } from "../common/data/json.mjs";
2
+ import { isUint8Array } from "../common/data/is.mjs";
3
+ import { v as toUint8Array } from "../bin-BAoS4qtm.mjs";
4
+ import process from "node:process";
5
+ import { dirname, join, normalize } from "node:path";
6
+ import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
7
+
8
+ //#region src/node/fs.ts
9
+ /** Try to use `~` for HOME folder if possible */
10
+ function toHumanReadableFilePath(path) {
11
+ const p = normalize(path);
12
+ const h = process.env.HOME;
13
+ if (h && p.startsWith(h)) return `~${p.slice(h.length)}`;
14
+ return p;
15
+ }
16
+ /**
17
+ * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.
18
+ * @deprecated
19
+ */
20
+ async function exists(path) {
21
+ try {
22
+ await stat(path);
23
+ } catch (err) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ async function isFile(path) {
29
+ try {
30
+ return (await stat(path)).isFile();
31
+ } catch (err) {
32
+ return false;
33
+ }
34
+ }
35
+ async function isFolder(path) {
36
+ try {
37
+ return (await stat(path)).isDirectory();
38
+ } catch (err) {
39
+ return false;
40
+ }
41
+ }
42
+ function isHiddenPath(path) {
43
+ return path.startsWith(".") || path.includes("/.");
44
+ }
45
+ /** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */
46
+ async function ensureFolder(...parts) {
47
+ const path = join(...parts);
48
+ if (!await isFolder(path)) await mkdir(path, { recursive: true });
49
+ return path;
50
+ }
51
+ /** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */
52
+ async function ensureFolderForFile(...parts) {
53
+ const path = dirname(join(...parts));
54
+ if (!await isFolder(path)) await mkdir(path, { recursive: true });
55
+ return path;
56
+ }
57
+ async function removeFolder(...parts) {
58
+ const path = join(...parts);
59
+ if (await isFolder(path)) await rm(path, { recursive: true });
60
+ return path;
61
+ }
62
+ async function readText(...parts) {
63
+ const path = join(...parts);
64
+ if (await isFile(path)) return await readFile(path, "utf-8");
65
+ }
66
+ async function readJson(...parts) {
67
+ const content = await readText(...parts);
68
+ if (content != null) try {
69
+ return JSON.parse(content);
70
+ } catch (err) {}
71
+ }
72
+ async function readBin(...parts) {
73
+ const path = join(...parts);
74
+ if (await isFile(path)) return toUint8Array(await readFile(path));
75
+ }
76
+ /** @deprecated use readJson or readBin */
77
+ async function readData(...parts) {
78
+ const path = join(...parts);
79
+ if (await isFile(path)) return await readFile(path);
80
+ }
81
+ async function writeText(path, content, createFolders = false) {
82
+ if (createFolders) await ensureFolderForFile(path);
83
+ await writeFile(path, content, "utf-8");
84
+ }
85
+ /** @deprecated use writeBin or writeJson */
86
+ async function writeData(path, content, createFolders = false) {
87
+ if (createFolders) await ensureFolderForFile(path);
88
+ await writeFile(path, isUint8Array(content) ? content : JSON.stringify(content));
89
+ }
90
+ async function writeBin(path, content, info = {}) {
91
+ const { createFolders = false } = info;
92
+ if (createFolders) await ensureFolderForFile(path);
93
+ await writeFile(path, content);
94
+ }
95
+ async function writeJson(path, content, info = {}) {
96
+ const { createFolders = false, pretty = false } = info;
97
+ await writeText(path, jsonStringifySorted(content, pretty ? 2 : void 0), createFolders);
98
+ }
99
+
100
+ //#endregion
101
+ export { ensureFolder, ensureFolderForFile, exists, isFile, isFolder, isHiddenPath, readBin, readData, readJson, readText, removeFolder, toHumanReadableFilePath, writeBin, writeData, writeJson, writeText };
2
102
  //# sourceMappingURL=fs.mjs.map