@hyperfrontend/project-scope 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/CHANGELOG.md +13 -15
  2. package/README.md +3 -4
  3. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.cjs.js +7 -0
  4. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.esm.js +5 -0
  5. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.cjs.js +13 -0
  6. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.esm.js +8 -0
  7. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/date/index.cjs.js +10 -0
  8. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/date/index.esm.js +8 -0
  9. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.cjs.js +6 -0
  10. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.esm.js +5 -0
  11. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.cjs.js +7 -0
  12. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.esm.js +5 -0
  13. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/map/index.cjs.js +6 -0
  14. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/map/index.esm.js +5 -0
  15. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/math/index.cjs.js +9 -0
  16. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/math/index.esm.js +6 -0
  17. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/number/index.cjs.js +7 -0
  18. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/number/index.esm.js +7 -0
  19. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.cjs.js +15 -0
  20. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.esm.js +9 -0
  21. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.cjs.js +6 -0
  22. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.esm.js +5 -0
  23. package/_dependencies/@hyperfrontend/logging/index.cjs.js +191 -0
  24. package/_dependencies/@hyperfrontend/logging/index.d.ts +151 -0
  25. package/_dependencies/@hyperfrontend/logging/index.esm.js +186 -0
  26. package/_shared/core/cache/index.cjs.js +135 -0
  27. package/_shared/core/cache/index.esm.js +128 -0
  28. package/_shared/core/errors/structured-errors/index.cjs.js +28 -0
  29. package/_shared/core/errors/structured-errors/index.esm.js +23 -0
  30. package/_shared/core/fs/stat/index.cjs.js +46 -0
  31. package/_shared/core/fs/stat/index.esm.js +40 -0
  32. package/_shared/core/path/join/index.cjs.js +13 -0
  33. package/_shared/core/path/join/index.esm.js +10 -0
  34. package/_shared/core/path/normalize/index.cjs.js +37 -0
  35. package/_shared/core/path/normalize/index.esm.js +31 -0
  36. package/_shared/core/path/resolve/index.cjs.js +47 -0
  37. package/_shared/core/path/resolve/index.esm.js +41 -0
  38. package/_shared/core/path/segments/index.cjs.js +38 -0
  39. package/_shared/core/path/segments/index.esm.js +31 -0
  40. package/_shared/core/patterns/glob/index.cjs.js +145 -0
  41. package/_shared/core/patterns/glob/index.esm.js +136 -0
  42. package/_shared/core/platform/detect/index.cjs.js +103 -0
  43. package/_shared/core/platform/detect/index.esm.js +95 -0
  44. package/_shared/core/platform/line-endings/index.cjs.js +52 -0
  45. package/_shared/core/platform/line-endings/index.esm.js +44 -0
  46. package/_shared/project/config/patterns/index.cjs.js +172 -0
  47. package/_shared/project/config/patterns/index.esm.js +169 -0
  48. package/_shared/tech/monorepo/pnpm-workspaces/index.cjs.js +33 -0
  49. package/_shared/tech/monorepo/pnpm-workspaces/index.esm.js +31 -0
  50. package/_shared/tech/shared-utils/detector-helpers/index.cjs.js +48 -0
  51. package/_shared/tech/shared-utils/detector-helpers/index.esm.js +43 -0
  52. package/_shared/vfs/types/index.cjs.js +14 -0
  53. package/_shared/vfs/types/index.esm.js +12 -0
  54. package/cli/index.cjs.js +1699 -2040
  55. package/cli/index.d.ts +273 -7
  56. package/cli/index.d.ts.map +1 -1
  57. package/cli/index.esm.js +1603 -1944
  58. package/core/encoding/index.cjs.js +88 -424
  59. package/core/encoding/index.d.ts +186 -3
  60. package/core/encoding/index.d.ts.map +1 -1
  61. package/core/encoding/index.esm.js +80 -415
  62. package/core/fs/index.cjs.js +231 -595
  63. package/core/fs/index.d.ts +479 -6
  64. package/core/fs/index.d.ts.map +1 -1
  65. package/core/fs/index.esm.js +221 -585
  66. package/core/index.cjs.js +518 -1804
  67. package/core/index.d.ts +486 -9
  68. package/core/index.d.ts.map +1 -1
  69. package/core/index.esm.js +501 -1784
  70. package/core/path/index.cjs.js +6 -235
  71. package/core/path/index.d.ts +306 -5
  72. package/core/path/index.d.ts.map +1 -1
  73. package/core/path/index.esm.js +4 -233
  74. package/core/platform/index.cjs.js +5 -226
  75. package/core/platform/index.d.ts +185 -3
  76. package/core/platform/index.d.ts.map +1 -1
  77. package/core/platform/index.esm.js +3 -222
  78. package/heuristics/dependencies/index.cjs.js +95 -509
  79. package/heuristics/dependencies/index.d.ts +99 -2
  80. package/heuristics/dependencies/index.d.ts.map +1 -1
  81. package/heuristics/dependencies/index.esm.js +69 -483
  82. package/heuristics/entry-points/index.cjs.js +93 -825
  83. package/heuristics/entry-points/index.d.ts +123 -2
  84. package/heuristics/entry-points/index.d.ts.map +1 -1
  85. package/heuristics/entry-points/index.esm.js +74 -806
  86. package/heuristics/framework/index.cjs.js +1482 -1473
  87. package/heuristics/framework/index.d.ts +104 -2
  88. package/heuristics/framework/index.d.ts.map +1 -1
  89. package/heuristics/framework/index.esm.js +1418 -1409
  90. package/heuristics/index.cjs.js +3207 -3383
  91. package/heuristics/index.d.ts +4 -5
  92. package/heuristics/index.d.ts.map +1 -1
  93. package/heuristics/index.esm.js +3234 -3410
  94. package/heuristics/project-type/index.cjs.js +1488 -1500
  95. package/heuristics/project-type/index.d.ts +64 -2
  96. package/heuristics/project-type/index.d.ts.map +1 -1
  97. package/heuristics/project-type/index.esm.js +1417 -1429
  98. package/index.cjs.js +3064 -3765
  99. package/index.d.ts +44 -10
  100. package/index.d.ts.map +1 -1
  101. package/index.esm.js +2923 -3612
  102. package/models/index.cjs.js +0 -1
  103. package/models/index.d.ts +20 -14
  104. package/models/index.d.ts.map +1 -1
  105. package/models/index.esm.js +0 -1
  106. package/nx/index.cjs.js +163 -606
  107. package/nx/index.d.ts +279 -4
  108. package/nx/index.d.ts.map +1 -1
  109. package/nx/index.esm.js +145 -583
  110. package/package.json +13 -12
  111. package/project/config/index.cjs.js +122 -1104
  112. package/project/config/index.d.ts +202 -4
  113. package/project/config/index.d.ts.map +1 -1
  114. package/project/config/index.esm.js +105 -1085
  115. package/project/index.cjs.js +323 -1143
  116. package/project/index.d.ts +4 -5
  117. package/project/index.d.ts.map +1 -1
  118. package/project/index.esm.js +302 -1119
  119. package/project/package/index.cjs.js +191 -483
  120. package/project/package/index.d.ts +280 -3
  121. package/project/package/index.d.ts.map +1 -1
  122. package/project/package/index.esm.js +178 -469
  123. package/project/root/index.cjs.js +107 -427
  124. package/project/root/index.d.ts +83 -2
  125. package/project/root/index.d.ts.map +1 -1
  126. package/project/root/index.esm.js +96 -416
  127. package/project/traversal/index.cjs.js +94 -645
  128. package/project/traversal/index.d.ts +165 -3
  129. package/project/traversal/index.d.ts.map +1 -1
  130. package/project/traversal/index.esm.js +80 -631
  131. package/tech/backend/index.cjs.js +221 -524
  132. package/tech/backend/index.d.ts +205 -8
  133. package/tech/backend/index.d.ts.map +1 -1
  134. package/tech/backend/index.esm.js +200 -503
  135. package/tech/build/index.cjs.js +348 -647
  136. package/tech/build/index.d.ts +276 -10
  137. package/tech/build/index.d.ts.map +1 -1
  138. package/tech/build/index.esm.js +326 -625
  139. package/tech/frontend/index.cjs.js +505 -700
  140. package/tech/frontend/index.d.ts +379 -15
  141. package/tech/frontend/index.d.ts.map +1 -1
  142. package/tech/frontend/index.esm.js +481 -676
  143. package/tech/index.cjs.js +1580 -1482
  144. package/tech/index.d.ts +55 -32
  145. package/tech/index.d.ts.map +1 -1
  146. package/tech/index.esm.js +1513 -1415
  147. package/tech/legacy/index.cjs.js +97 -474
  148. package/tech/legacy/index.d.ts +125 -7
  149. package/tech/legacy/index.d.ts.map +1 -1
  150. package/tech/legacy/index.esm.js +79 -456
  151. package/tech/linting/index.cjs.js +136 -536
  152. package/tech/linting/index.d.ts +129 -7
  153. package/tech/linting/index.d.ts.map +1 -1
  154. package/tech/linting/index.esm.js +116 -516
  155. package/tech/monorepo/index.cjs.js +244 -584
  156. package/tech/monorepo/index.d.ts +241 -10
  157. package/tech/monorepo/index.d.ts.map +1 -1
  158. package/tech/monorepo/index.esm.js +224 -564
  159. package/tech/testing/index.cjs.js +214 -582
  160. package/tech/testing/index.d.ts +176 -8
  161. package/tech/testing/index.d.ts.map +1 -1
  162. package/tech/testing/index.esm.js +196 -564
  163. package/tech/types/index.cjs.js +121 -532
  164. package/tech/types/index.d.ts +120 -2
  165. package/tech/types/index.d.ts.map +1 -1
  166. package/tech/types/index.esm.js +99 -510
  167. package/vfs/index.cjs.js +647 -1187
  168. package/vfs/index.d.ts +360 -6
  169. package/vfs/index.d.ts.map +1 -1
  170. package/vfs/index.esm.js +672 -1212
  171. package/ARCHITECTURE.md +0 -370
  172. package/analyze.d.ts +0 -33
  173. package/analyze.d.ts.map +0 -1
  174. package/cli/commands/analyze.d.ts +0 -20
  175. package/cli/commands/analyze.d.ts.map +0 -1
  176. package/cli/commands/config.d.ts +0 -20
  177. package/cli/commands/config.d.ts.map +0 -1
  178. package/cli/commands/deps.d.ts +0 -18
  179. package/cli/commands/deps.d.ts.map +0 -1
  180. package/cli/commands/tree.d.ts +0 -24
  181. package/cli/commands/tree.d.ts.map +0 -1
  182. package/cli/index.cjs.js.map +0 -1
  183. package/cli/index.esm.js.map +0 -1
  184. package/cli/run.d.ts +0 -25
  185. package/cli/run.d.ts.map +0 -1
  186. package/cli/types.d.ts +0 -55
  187. package/cli/types.d.ts.map +0 -1
  188. package/core/cache.d.ts +0 -157
  189. package/core/cache.d.ts.map +0 -1
  190. package/core/encoding/convert.d.ts +0 -32
  191. package/core/encoding/convert.d.ts.map +0 -1
  192. package/core/encoding/detect.d.ts +0 -86
  193. package/core/encoding/detect.d.ts.map +0 -1
  194. package/core/encoding/index.cjs.js.map +0 -1
  195. package/core/encoding/index.esm.js.map +0 -1
  196. package/core/errors/structured-errors.d.ts +0 -64
  197. package/core/errors/structured-errors.d.ts.map +0 -1
  198. package/core/fs/directory.d.ts +0 -88
  199. package/core/fs/directory.d.ts.map +0 -1
  200. package/core/fs/index.cjs.js.map +0 -1
  201. package/core/fs/index.esm.js.map +0 -1
  202. package/core/fs/read.d.ts +0 -86
  203. package/core/fs/read.d.ts.map +0 -1
  204. package/core/fs/stat.d.ts +0 -58
  205. package/core/fs/stat.d.ts.map +0 -1
  206. package/core/fs/traversal.d.ts +0 -26
  207. package/core/fs/traversal.d.ts.map +0 -1
  208. package/core/fs/write.d.ts +0 -75
  209. package/core/fs/write.d.ts.map +0 -1
  210. package/core/index.cjs.js.map +0 -1
  211. package/core/index.esm.js.map +0 -1
  212. package/core/logger.d.ts +0 -111
  213. package/core/logger.d.ts.map +0 -1
  214. package/core/path/index.cjs.js.map +0 -1
  215. package/core/path/index.esm.js.map +0 -1
  216. package/core/path/join.d.ts +0 -17
  217. package/core/path/join.d.ts.map +0 -1
  218. package/core/path/normalize.d.ts +0 -37
  219. package/core/path/normalize.d.ts.map +0 -1
  220. package/core/path/resolve.d.ts +0 -52
  221. package/core/path/resolve.d.ts.map +0 -1
  222. package/core/path/segments.d.ts +0 -59
  223. package/core/path/segments.d.ts.map +0 -1
  224. package/core/patterns/glob.d.ts +0 -46
  225. package/core/patterns/glob.d.ts.map +0 -1
  226. package/core/platform/detect.d.ts +0 -66
  227. package/core/platform/detect.d.ts.map +0 -1
  228. package/core/platform/index.cjs.js.map +0 -1
  229. package/core/platform/index.esm.js.map +0 -1
  230. package/core/platform/line-endings.d.ts +0 -48
  231. package/core/platform/line-endings.d.ts.map +0 -1
  232. package/heuristics/dependencies/analyze.d.ts +0 -77
  233. package/heuristics/dependencies/analyze.d.ts.map +0 -1
  234. package/heuristics/dependencies/index.cjs.js.map +0 -1
  235. package/heuristics/dependencies/index.esm.js.map +0 -1
  236. package/heuristics/entry-points/discover.d.ts +0 -86
  237. package/heuristics/entry-points/discover.d.ts.map +0 -1
  238. package/heuristics/entry-points/index.cjs.js.map +0 -1
  239. package/heuristics/entry-points/index.esm.js.map +0 -1
  240. package/heuristics/framework/identify.d.ts +0 -84
  241. package/heuristics/framework/identify.d.ts.map +0 -1
  242. package/heuristics/framework/index.cjs.js.map +0 -1
  243. package/heuristics/framework/index.esm.js.map +0 -1
  244. package/heuristics/index.cjs.js.map +0 -1
  245. package/heuristics/index.esm.js.map +0 -1
  246. package/heuristics/project-type/detect.d.ts +0 -61
  247. package/heuristics/project-type/detect.d.ts.map +0 -1
  248. package/heuristics/project-type/index.cjs.js.map +0 -1
  249. package/heuristics/project-type/index.esm.js.map +0 -1
  250. package/index.cjs.js.map +0 -1
  251. package/index.esm.js.map +0 -1
  252. package/models/index.cjs.js.map +0 -1
  253. package/models/index.esm.js.map +0 -1
  254. package/nx/detect.d.ts +0 -105
  255. package/nx/detect.d.ts.map +0 -1
  256. package/nx/devkit-loader.d.ts +0 -62
  257. package/nx/devkit-loader.d.ts.map +0 -1
  258. package/nx/index.cjs.js.map +0 -1
  259. package/nx/index.esm.js.map +0 -1
  260. package/nx/project-config.d.ts +0 -109
  261. package/nx/project-config.d.ts.map +0 -1
  262. package/project/config/detect.d.ts +0 -77
  263. package/project/config/detect.d.ts.map +0 -1
  264. package/project/config/index.cjs.js.map +0 -1
  265. package/project/config/index.esm.js.map +0 -1
  266. package/project/config/parse.d.ts +0 -53
  267. package/project/config/parse.d.ts.map +0 -1
  268. package/project/config/patterns.d.ts +0 -31
  269. package/project/config/patterns.d.ts.map +0 -1
  270. package/project/index.cjs.js.map +0 -1
  271. package/project/index.esm.js.map +0 -1
  272. package/project/package/dependencies.d.ts +0 -101
  273. package/project/package/dependencies.d.ts.map +0 -1
  274. package/project/package/index.cjs.js.map +0 -1
  275. package/project/package/index.esm.js.map +0 -1
  276. package/project/package/read.d.ts +0 -66
  277. package/project/package/read.d.ts.map +0 -1
  278. package/project/root/detect.d.ts +0 -65
  279. package/project/root/detect.d.ts.map +0 -1
  280. package/project/root/index.cjs.js.map +0 -1
  281. package/project/root/index.esm.js.map +0 -1
  282. package/project/traversal/index.cjs.js.map +0 -1
  283. package/project/traversal/index.esm.js.map +0 -1
  284. package/project/traversal/search.d.ts +0 -59
  285. package/project/traversal/search.d.ts.map +0 -1
  286. package/project/traversal/walk.d.ts +0 -63
  287. package/project/traversal/walk.d.ts.map +0 -1
  288. package/tech/backend/detect-all.d.ts +0 -13
  289. package/tech/backend/detect-all.d.ts.map +0 -1
  290. package/tech/backend/express.d.ts +0 -11
  291. package/tech/backend/express.d.ts.map +0 -1
  292. package/tech/backend/fastify.d.ts +0 -11
  293. package/tech/backend/fastify.d.ts.map +0 -1
  294. package/tech/backend/hono.d.ts +0 -11
  295. package/tech/backend/hono.d.ts.map +0 -1
  296. package/tech/backend/index.cjs.js.map +0 -1
  297. package/tech/backend/index.esm.js.map +0 -1
  298. package/tech/backend/koa.d.ts +0 -11
  299. package/tech/backend/koa.d.ts.map +0 -1
  300. package/tech/backend/nestjs.d.ts +0 -11
  301. package/tech/backend/nestjs.d.ts.map +0 -1
  302. package/tech/backend/types.d.ts +0 -31
  303. package/tech/backend/types.d.ts.map +0 -1
  304. package/tech/build/babel.d.ts +0 -13
  305. package/tech/build/babel.d.ts.map +0 -1
  306. package/tech/build/detect-all.d.ts +0 -13
  307. package/tech/build/detect-all.d.ts.map +0 -1
  308. package/tech/build/esbuild.d.ts +0 -11
  309. package/tech/build/esbuild.d.ts.map +0 -1
  310. package/tech/build/index.cjs.js.map +0 -1
  311. package/tech/build/index.esm.js.map +0 -1
  312. package/tech/build/parcel.d.ts +0 -13
  313. package/tech/build/parcel.d.ts.map +0 -1
  314. package/tech/build/rollup.d.ts +0 -13
  315. package/tech/build/rollup.d.ts.map +0 -1
  316. package/tech/build/swc.d.ts +0 -13
  317. package/tech/build/swc.d.ts.map +0 -1
  318. package/tech/build/types.d.ts +0 -31
  319. package/tech/build/types.d.ts.map +0 -1
  320. package/tech/build/vite.d.ts +0 -13
  321. package/tech/build/vite.d.ts.map +0 -1
  322. package/tech/build/webpack.d.ts +0 -13
  323. package/tech/build/webpack.d.ts.map +0 -1
  324. package/tech/frontend/angular.d.ts +0 -11
  325. package/tech/frontend/angular.d.ts.map +0 -1
  326. package/tech/frontend/astro.d.ts +0 -11
  327. package/tech/frontend/astro.d.ts.map +0 -1
  328. package/tech/frontend/detect-all.d.ts +0 -13
  329. package/tech/frontend/detect-all.d.ts.map +0 -1
  330. package/tech/frontend/gatsby.d.ts +0 -11
  331. package/tech/frontend/gatsby.d.ts.map +0 -1
  332. package/tech/frontend/index.cjs.js.map +0 -1
  333. package/tech/frontend/index.esm.js.map +0 -1
  334. package/tech/frontend/nextjs.d.ts +0 -11
  335. package/tech/frontend/nextjs.d.ts.map +0 -1
  336. package/tech/frontend/nuxt.d.ts +0 -11
  337. package/tech/frontend/nuxt.d.ts.map +0 -1
  338. package/tech/frontend/qwik.d.ts +0 -11
  339. package/tech/frontend/qwik.d.ts.map +0 -1
  340. package/tech/frontend/react.d.ts +0 -11
  341. package/tech/frontend/react.d.ts.map +0 -1
  342. package/tech/frontend/remix.d.ts +0 -11
  343. package/tech/frontend/remix.d.ts.map +0 -1
  344. package/tech/frontend/solid.d.ts +0 -11
  345. package/tech/frontend/solid.d.ts.map +0 -1
  346. package/tech/frontend/svelte.d.ts +0 -11
  347. package/tech/frontend/svelte.d.ts.map +0 -1
  348. package/tech/frontend/sveltekit.d.ts +0 -11
  349. package/tech/frontend/sveltekit.d.ts.map +0 -1
  350. package/tech/frontend/types.d.ts +0 -35
  351. package/tech/frontend/types.d.ts.map +0 -1
  352. package/tech/frontend/vue.d.ts +0 -11
  353. package/tech/frontend/vue.d.ts.map +0 -1
  354. package/tech/index.cjs.js.map +0 -1
  355. package/tech/index.esm.js.map +0 -1
  356. package/tech/legacy/angularjs.d.ts +0 -12
  357. package/tech/legacy/angularjs.d.ts.map +0 -1
  358. package/tech/legacy/backbone.d.ts +0 -11
  359. package/tech/legacy/backbone.d.ts.map +0 -1
  360. package/tech/legacy/detect-all.d.ts +0 -13
  361. package/tech/legacy/detect-all.d.ts.map +0 -1
  362. package/tech/legacy/ember.d.ts +0 -11
  363. package/tech/legacy/ember.d.ts.map +0 -1
  364. package/tech/legacy/index.cjs.js.map +0 -1
  365. package/tech/legacy/index.esm.js.map +0 -1
  366. package/tech/legacy/jquery.d.ts +0 -11
  367. package/tech/legacy/jquery.d.ts.map +0 -1
  368. package/tech/legacy/types.d.ts +0 -33
  369. package/tech/legacy/types.d.ts.map +0 -1
  370. package/tech/linting/biome.d.ts +0 -11
  371. package/tech/linting/biome.d.ts.map +0 -1
  372. package/tech/linting/detect-all.d.ts +0 -13
  373. package/tech/linting/detect-all.d.ts.map +0 -1
  374. package/tech/linting/eslint.d.ts +0 -13
  375. package/tech/linting/eslint.d.ts.map +0 -1
  376. package/tech/linting/index.cjs.js.map +0 -1
  377. package/tech/linting/index.esm.js.map +0 -1
  378. package/tech/linting/prettier.d.ts +0 -13
  379. package/tech/linting/prettier.d.ts.map +0 -1
  380. package/tech/linting/stylelint.d.ts +0 -13
  381. package/tech/linting/stylelint.d.ts.map +0 -1
  382. package/tech/linting/types.d.ts +0 -31
  383. package/tech/linting/types.d.ts.map +0 -1
  384. package/tech/monorepo/detect-all.d.ts +0 -13
  385. package/tech/monorepo/detect-all.d.ts.map +0 -1
  386. package/tech/monorepo/index.cjs.js.map +0 -1
  387. package/tech/monorepo/index.esm.js.map +0 -1
  388. package/tech/monorepo/lerna.d.ts +0 -11
  389. package/tech/monorepo/lerna.d.ts.map +0 -1
  390. package/tech/monorepo/npm-workspaces.d.ts +0 -11
  391. package/tech/monorepo/npm-workspaces.d.ts.map +0 -1
  392. package/tech/monorepo/nx.d.ts +0 -11
  393. package/tech/monorepo/nx.d.ts.map +0 -1
  394. package/tech/monorepo/pnpm-workspaces.d.ts +0 -9
  395. package/tech/monorepo/pnpm-workspaces.d.ts.map +0 -1
  396. package/tech/monorepo/rush.d.ts +0 -11
  397. package/tech/monorepo/rush.d.ts.map +0 -1
  398. package/tech/monorepo/turborepo.d.ts +0 -11
  399. package/tech/monorepo/turborepo.d.ts.map +0 -1
  400. package/tech/monorepo/types.d.ts +0 -39
  401. package/tech/monorepo/types.d.ts.map +0 -1
  402. package/tech/monorepo/yarn-workspaces.d.ts +0 -11
  403. package/tech/monorepo/yarn-workspaces.d.ts.map +0 -1
  404. package/tech/shared-utils/detector-helpers.d.ts +0 -52
  405. package/tech/shared-utils/detector-helpers.d.ts.map +0 -1
  406. package/tech/shared-utils/types.d.ts +0 -41
  407. package/tech/shared-utils/types.d.ts.map +0 -1
  408. package/tech/testing/cypress.d.ts +0 -13
  409. package/tech/testing/cypress.d.ts.map +0 -1
  410. package/tech/testing/detect-all.d.ts +0 -13
  411. package/tech/testing/detect-all.d.ts.map +0 -1
  412. package/tech/testing/index.cjs.js.map +0 -1
  413. package/tech/testing/index.esm.js.map +0 -1
  414. package/tech/testing/jest.d.ts +0 -13
  415. package/tech/testing/jest.d.ts.map +0 -1
  416. package/tech/testing/mocha.d.ts +0 -13
  417. package/tech/testing/mocha.d.ts.map +0 -1
  418. package/tech/testing/playwright.d.ts +0 -13
  419. package/tech/testing/playwright.d.ts.map +0 -1
  420. package/tech/testing/types.d.ts +0 -35
  421. package/tech/testing/types.d.ts.map +0 -1
  422. package/tech/testing/vitest.d.ts +0 -13
  423. package/tech/testing/vitest.d.ts.map +0 -1
  424. package/tech/types/detectors.d.ts +0 -67
  425. package/tech/types/detectors.d.ts.map +0 -1
  426. package/tech/types/index.cjs.js.map +0 -1
  427. package/tech/types/index.esm.js.map +0 -1
  428. package/vfs/commit.d.ts +0 -32
  429. package/vfs/commit.d.ts.map +0 -1
  430. package/vfs/diff.d.ts +0 -73
  431. package/vfs/diff.d.ts.map +0 -1
  432. package/vfs/factory.d.ts +0 -37
  433. package/vfs/factory.d.ts.map +0 -1
  434. package/vfs/fs-tree.d.ts +0 -13
  435. package/vfs/fs-tree.d.ts.map +0 -1
  436. package/vfs/index.cjs.js.map +0 -1
  437. package/vfs/index.esm.js.map +0 -1
  438. package/vfs/types.d.ts +0 -178
  439. package/vfs/types.d.ts.map +0 -1
@@ -1,393 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var node_fs = require('node:fs');
4
- var node_path = require('node:path');
5
-
6
- /**
7
- * Safe copies of Error built-ins via factory functions.
8
- *
9
- * Since constructors cannot be safely captured via Object.assign, this module
10
- * provides factory functions that use Reflect.construct internally.
11
- *
12
- * These references are captured at module initialization time to protect against
13
- * prototype pollution attacks. Import only what you need for tree-shaking.
14
- *
15
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/error
16
- */
17
- // Capture references at module initialization time
18
- const _Error = globalThis.Error;
19
- const _Reflect$1 = globalThis.Reflect;
20
- /**
21
- * (Safe copy) Creates a new Error using the captured Error constructor.
22
- * Use this instead of `new Error()`.
23
- *
24
- * @param message - Optional error message.
25
- * @param options - Optional error options.
26
- * @returns A new Error instance.
27
- */
28
- const createError = (message, options) => _Reflect$1.construct(_Error, [message, options]);
29
-
30
- /**
31
- * Safe copies of JSON built-in methods.
32
- *
33
- * These references are captured at module initialization time to protect against
34
- * prototype pollution attacks. Import only what you need for tree-shaking.
35
- *
36
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/json
37
- */
38
- // Capture references at module initialization time
39
- const _JSON = globalThis.JSON;
40
- /**
41
- * (Safe copy) Converts a JavaScript Object Notation (JSON) string into an object.
42
- */
43
- const parse = _JSON.parse;
44
- /**
45
- * (Safe copy) Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
46
- */
47
- const stringify = _JSON.stringify;
48
-
49
- /**
50
- * Safe copies of Object built-in methods.
51
- *
52
- * These references are captured at module initialization time to protect against
53
- * prototype pollution attacks. Import only what you need for tree-shaking.
54
- *
55
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/object
56
- */
57
- // Capture references at module initialization time
58
- const _Object = globalThis.Object;
59
- /**
60
- * (Safe copy) Prevents modification of existing property attributes and values,
61
- * and prevents the addition of new properties.
62
- */
63
- const freeze = _Object.freeze;
64
- /**
65
- * (Safe copy) Returns the names of the enumerable string properties and methods of an object.
66
- */
67
- const keys = _Object.keys;
68
- /**
69
- * (Safe copy) Returns an array of key/values of the enumerable own properties of an object.
70
- */
71
- const entries = _Object.entries;
72
- /**
73
- * (Safe copy) Adds one or more properties to an object, and/or modifies attributes of existing properties.
74
- */
75
- const defineProperties = _Object.defineProperties;
76
-
77
- /**
78
- * Safe copies of Array built-in static methods.
79
- *
80
- * These references are captured at module initialization time to protect against
81
- * prototype pollution attacks. Import only what you need for tree-shaking.
82
- *
83
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/array
84
- */
85
- // Capture references at module initialization time
86
- const _Array = globalThis.Array;
87
- /**
88
- * (Safe copy) Determines whether the passed value is an Array.
89
- */
90
- const isArray = _Array.isArray;
91
-
92
- /**
93
- * Safe copies of Console built-in methods.
94
- *
95
- * These references are captured at module initialization time to protect against
96
- * prototype pollution attacks. Import only what you need for tree-shaking.
97
- *
98
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/console
99
- */
100
- // Capture references at module initialization time
101
- const _console = globalThis.console;
102
- /**
103
- * (Safe copy) Outputs a message to the console.
104
- */
105
- const log = _console.log.bind(_console);
106
- /**
107
- * (Safe copy) Outputs a warning message to the console.
108
- */
109
- const warn = _console.warn.bind(_console);
110
- /**
111
- * (Safe copy) Outputs an error message to the console.
112
- */
113
- const error = _console.error.bind(_console);
114
- /**
115
- * (Safe copy) Outputs an informational message to the console.
116
- */
117
- const info = _console.info.bind(_console);
118
- /**
119
- * (Safe copy) Outputs a debug message to the console.
120
- */
121
- const debug = _console.debug.bind(_console);
122
- /**
123
- * (Safe copy) Outputs a stack trace to the console.
124
- */
125
- _console.trace.bind(_console);
126
- /**
127
- * (Safe copy) Displays an interactive listing of the properties of a specified object.
128
- */
129
- _console.dir.bind(_console);
130
- /**
131
- * (Safe copy) Displays tabular data as a table.
132
- */
133
- _console.table.bind(_console);
134
- /**
135
- * (Safe copy) Writes an error message to the console if the assertion is false.
136
- */
137
- _console.assert.bind(_console);
138
- /**
139
- * (Safe copy) Clears the console.
140
- */
141
- _console.clear.bind(_console);
142
- /**
143
- * (Safe copy) Logs the number of times that this particular call to count() has been called.
144
- */
145
- _console.count.bind(_console);
146
- /**
147
- * (Safe copy) Resets the counter used with console.count().
148
- */
149
- _console.countReset.bind(_console);
150
- /**
151
- * (Safe copy) Creates a new inline group in the console.
152
- */
153
- _console.group.bind(_console);
154
- /**
155
- * (Safe copy) Creates a new inline group in the console that is initially collapsed.
156
- */
157
- _console.groupCollapsed.bind(_console);
158
- /**
159
- * (Safe copy) Exits the current inline group.
160
- */
161
- _console.groupEnd.bind(_console);
162
- /**
163
- * (Safe copy) Starts a timer with a name specified as an input parameter.
164
- */
165
- _console.time.bind(_console);
166
- /**
167
- * (Safe copy) Stops a timer that was previously started.
168
- */
169
- _console.timeEnd.bind(_console);
170
- /**
171
- * (Safe copy) Logs the current value of a timer that was previously started.
172
- */
173
- _console.timeLog.bind(_console);
174
-
175
- /**
176
- * Safe copies of Set built-in via factory function.
177
- *
178
- * Since constructors cannot be safely captured via Object.assign, this module
179
- * provides a factory function that uses Reflect.construct internally.
180
- *
181
- * These references are captured at module initialization time to protect against
182
- * prototype pollution attacks. Import only what you need for tree-shaking.
183
- *
184
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/set
185
- */
186
- // Capture references at module initialization time
187
- const _Set = globalThis.Set;
188
- const _Reflect = globalThis.Reflect;
189
- /**
190
- * (Safe copy) Creates a new Set using the captured Set constructor.
191
- * Use this instead of `new Set()`.
192
- *
193
- * @param iterable - Optional iterable of values.
194
- * @returns A new Set instance.
195
- */
196
- const createSet = (iterable) => _Reflect.construct(_Set, iterable ? [iterable] : []);
197
-
198
- const registeredClasses = [];
199
-
200
- /**
201
- * Returns the data type of the target.
202
- * Uses native `typeof` operator, however, makes distinction between `null`, `array`, and `object`.
203
- * Also, when classes are registered via `registerClass`, it checks if objects are instance of any known registered class.
204
- *
205
- * @param target - The target to get the data type of.
206
- * @returns The data type of the target.
207
- */
208
- const getType = (target) => {
209
- if (target === null)
210
- return 'null';
211
- const nativeDataType = typeof target;
212
- if (nativeDataType === 'object') {
213
- if (isArray(target))
214
- return 'array';
215
- for (const registeredClass of registeredClasses) {
216
- if (target instanceof registeredClass)
217
- return registeredClass.name;
218
- }
219
- }
220
- return nativeDataType;
221
- };
222
-
223
- /* eslint-disable @typescript-eslint/no-explicit-any */
224
- /**
225
- * Creates a wrapper function that only executes the wrapped function if the condition function returns true.
226
- *
227
- * @param func - The function to be conditionally executed.
228
- * @param conditionFunc - A function that returns a boolean, determining if `func` should be executed.
229
- * @returns A wrapped version of `func` that executes conditionally.
230
- */
231
- function createConditionalExecutionFunction(func, conditionFunc) {
232
- return function (...args) {
233
- if (conditionFunc()) {
234
- return func(...args);
235
- }
236
- };
237
- }
238
-
239
- /* eslint-disable @typescript-eslint/no-explicit-any */
240
- /**
241
- * Creates a wrapper function that silently ignores any errors thrown by the wrapped void function.
242
- * This function is specifically for wrapping functions that do not return a value (void functions).
243
- * Exceptions are swallowed without any logging or handling.
244
- *
245
- * @param func - The void function to be wrapped.
246
- * @returns A wrapped version of the input function that ignores errors.
247
- */
248
- function createErrorIgnoringFunction(func) {
249
- return function (...args) {
250
- try {
251
- func(...args);
252
- }
253
- catch {
254
- // Deliberately swallowing/ignoring the exception
255
- }
256
- };
257
- }
258
-
259
- /* eslint-disable @typescript-eslint/no-unused-vars */
260
- /**
261
- * A no-operation function (noop) that does nothing regardless of the arguments passed.
262
- * It is designed to be as permissive as possible in its typing without using the `Function` keyword.
263
- *
264
- * @param args - Any arguments passed to the function (ignored)
265
- */
266
- const noop = (...args) => {
267
- // Intentionally does nothing
268
- };
269
-
270
- const logLevels = ['none', 'error', 'warn', 'log', 'info', 'debug'];
271
- const priority = {
272
- error: 4,
273
- warn: 3,
274
- log: 2,
275
- info: 1,
276
- debug: 0,
277
- };
278
- /**
279
- * Validates whether a given string is a valid log level.
280
- *
281
- * @param level - The log level to validate
282
- * @returns True if the level is valid, false otherwise
283
- */
284
- function isValidLogLevel(level) {
285
- return logLevels.includes(level);
286
- }
287
- /**
288
- * Creates a log level configuration manager for controlling logging behavior.
289
- * Provides methods to get, set, and evaluate log levels based on priority.
290
- *
291
- * @param level - The initial log level (defaults to 'error')
292
- * @returns A configuration object with log level management methods
293
- * @throws {Error} When the provided level is not a valid log level
294
- */
295
- function createLogLevelConfig(level = 'error') {
296
- if (!isValidLogLevel(level)) {
297
- throw createError('Cannot create log level configuration with a valid default log level');
298
- }
299
- const state = { level };
300
- const getLogLevel = () => state.level;
301
- const setLogLevel = (level) => {
302
- if (!isValidLogLevel(level)) {
303
- throw createError(`Cannot set value '${level}' level. Expected levels are ${logLevels}.`);
304
- }
305
- state.level = level;
306
- };
307
- const shouldLog = (level) => {
308
- if (state.level === 'none' || level === 'none' || !isValidLogLevel(level)) {
309
- return false;
310
- }
311
- return priority[level] >= priority[state.level];
312
- };
313
- return freeze({
314
- getLogLevel,
315
- setLogLevel,
316
- shouldLog,
317
- });
318
- }
319
-
320
- /**
321
- * Creates a logger instance with configurable log level filtering.
322
- * Each log function is wrapped to respect the current log level setting.
323
- *
324
- * @param error - Function to handle error-level logs (required)
325
- * @param warn - Function to handle warning-level logs (optional, defaults to noop)
326
- * @param log - Function to handle standard logs (optional, defaults to noop)
327
- * @param info - Function to handle info-level logs (optional, defaults to noop)
328
- * @param debug - Function to handle debug-level logs (optional, defaults to noop)
329
- * @returns A frozen logger object with log methods and level control
330
- * @throws {ErrorLevelFn} When any provided log function is invalid
331
- */
332
- function createLogger(error, warn = noop, log = noop, info = noop, debug = noop) {
333
- if (notValidLogFn(error)) {
334
- throw createError(notFnMsg('error'));
335
- }
336
- if (notValidLogFn(warn)) {
337
- throw createError(notFnMsg('warn'));
338
- }
339
- if (notValidLogFn(log)) {
340
- throw createError(notFnMsg('log'));
341
- }
342
- if (notValidLogFn(info)) {
343
- throw createError(notFnMsg('info'));
344
- }
345
- if (notValidLogFn(debug)) {
346
- throw createError(notFnMsg('debug'));
347
- }
348
- const { setLogLevel, getLogLevel, shouldLog } = createLogLevelConfig();
349
- const wrapLogFn = (fn, level) => {
350
- if (fn === noop)
351
- return fn;
352
- const condition = () => shouldLog(level);
353
- return createConditionalExecutionFunction(createErrorIgnoringFunction(fn), condition);
354
- };
355
- return freeze({
356
- error: wrapLogFn(error, 'error'),
357
- warn: wrapLogFn(warn, 'warn'),
358
- log: wrapLogFn(log, 'log'),
359
- info: wrapLogFn(info, 'info'),
360
- debug: wrapLogFn(debug, 'debug'),
361
- setLogLevel,
362
- getLogLevel,
363
- });
364
- }
365
- /**
366
- * Validates whether a given value is a valid log function.
367
- *
368
- * @param fn - The value to validate
369
- * @returns True if the value is not a function (invalid), false if it is valid
370
- */
371
- function notValidLogFn(fn) {
372
- return getType(fn) !== 'function' && fn !== noop;
373
- }
374
- /**
375
- * Generates an error message for invalid log function parameters.
376
- *
377
- * @param label - The name of the log function that failed validation
378
- * @returns A formatted error message string
379
- */
380
- function notFnMsg(label) {
381
- return `Cannot create a logger when ${label} is not a function`;
382
- }
383
-
384
- createLogger(error, warn, log, info, debug);
3
+ const node_fs = require('node:fs');
4
+ const node_path = require('node:path');
5
+ const index_cjs_js$4 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.cjs.js');
6
+ const index_cjs_js$3 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.cjs.js');
7
+ const index_cjs_js$5 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.cjs.js');
8
+ const index_cjs_js$2 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.cjs.js');
9
+ const index_cjs_js = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.cjs.js');
10
+ const index_cjs_js$1 = require('../../_dependencies/@hyperfrontend/logging/index.cjs.js');
11
+ const index_cjs_js$6 = require('../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.cjs.js');
12
+ const { getFileStat, isFile, isDirectory, isSymlink, exists } = require('../../_shared/core/fs/stat/index.cjs.js');
13
+ const { join } = require('../../_shared/core/path/join/index.cjs.js');
385
14
 
386
15
  /**
387
16
  * Global log level registry.
388
17
  * Tracks all created scoped loggers to allow global log level changes.
389
18
  */
390
- const loggerRegistry = createSet();
19
+ const loggerRegistry = index_cjs_js.createSet();
391
20
  /** Redacted placeholder for sensitive values */
392
21
  const REDACTED = '[REDACTED]';
393
22
  /**
@@ -421,17 +50,24 @@ function isSensitiveKey(key) {
421
50
  *
422
51
  * @param obj - Object to sanitize
423
52
  * @returns New object with sensitive values redacted
53
+ *
54
+ * @example Sanitizing sensitive data
55
+ * ```typescript
56
+ * const config = { apiKey: 'secret123', endpoint: 'https://api.example.com' }
57
+ * const safe = sanitize(config)
58
+ * // => { apiKey: '[REDACTED]', endpoint: 'https://api.example.com' }
59
+ * ```
424
60
  */
425
61
  function sanitize(obj) {
426
62
  if (obj === null || obj === undefined) {
427
63
  return obj;
428
64
  }
429
- if (isArray(obj)) {
65
+ if (index_cjs_js$4.isArray(obj)) {
430
66
  return obj.map((item) => sanitize(item));
431
67
  }
432
68
  if (typeof obj === 'object') {
433
69
  const result = {};
434
- for (const [key, value] of entries(obj)) {
70
+ for (const [key, value] of index_cjs_js$2.entries(obj)) {
435
71
  if (isSensitiveKey(key)) {
436
72
  result[key] = REDACTED;
437
73
  }
@@ -456,9 +92,9 @@ function sanitize(obj) {
456
92
  */
457
93
  function formatMessage(namespace, message, meta) {
458
94
  const prefix = `[${namespace}]`;
459
- if (meta && keys(meta).length > 0) {
95
+ if (meta && index_cjs_js$2.keys(meta).length > 0) {
460
96
  const sanitizedMeta = sanitize(meta);
461
- return `${prefix} ${message} ${stringify(sanitizedMeta)}`;
97
+ return `${prefix} ${message} ${index_cjs_js$5.stringify(sanitizedMeta)}`;
462
98
  }
463
99
  return `${prefix} ${message}`;
464
100
  }
@@ -471,7 +107,7 @@ function formatMessage(namespace, message, meta) {
471
107
  * @param options - Logger configuration options
472
108
  * @returns A configured scoped logger instance
473
109
  *
474
- * @example
110
+ * @example Creating a scoped logger
475
111
  * ```typescript
476
112
  * const logger = createScopedLogger('project-scope')
477
113
  * logger.setLogLevel('debug')
@@ -486,16 +122,13 @@ function formatMessage(namespace, message, meta) {
486
122
  */
487
123
  function createScopedLogger(namespace, options = {}) {
488
124
  const { level = 'error', sanitizeSecrets = true } = options;
489
- // Create wrapper functions that add namespace prefix and sanitization
490
125
  const createLogFn = (baseFn) => (message, meta) => {
491
126
  const processedMeta = sanitizeSecrets && meta ? sanitize(meta) : meta;
492
127
  baseFn(formatMessage(namespace, message, processedMeta));
493
128
  };
494
- // Create base logger with wrapped functions
495
- const baseLogger = createLogger(createLogFn(error), createLogFn(warn), createLogFn(log), createLogFn(info), createLogFn(debug));
496
- // Set initial log level (use global override if set)
129
+ const baseLogger = index_cjs_js$1.createLogger(createLogFn(index_cjs_js$3.error), createLogFn(index_cjs_js$3.warn), createLogFn(index_cjs_js$3.log), createLogFn(index_cjs_js$3.info), createLogFn(index_cjs_js$3.debug));
497
130
  baseLogger.setLogLevel(level);
498
- const scopedLogger = freeze({
131
+ const scopedLogger = index_cjs_js$2.freeze({
499
132
  error: (message, meta) => baseLogger.error(message, meta),
500
133
  warn: (message, meta) => baseLogger.warn(message, meta),
501
134
  log: (message, meta) => baseLogger.log(message, meta),
@@ -504,7 +137,6 @@ function createScopedLogger(namespace, options = {}) {
504
137
  setLogLevel: baseLogger.setLogLevel,
505
138
  getLogLevel: baseLogger.getLogLevel,
506
139
  });
507
- // Register logger for global level management
508
140
  loggerRegistry.add(scopedLogger);
509
141
  return scopedLogger;
510
142
  }
@@ -512,7 +144,7 @@ function createScopedLogger(namespace, options = {}) {
512
144
  * Default logger instance for the project-scope library.
513
145
  * Use this for general logging within the library.
514
146
  *
515
- * @example
147
+ * @example Using the default logger
516
148
  * ```typescript
517
149
  * import { logger } from '@hyperfrontend/project-scope/core'
518
150
  *
@@ -530,10 +162,19 @@ const fsLogger = createScopedLogger('project-scope:fs');
530
162
  * @param code - The category code for this type of filesystem failure
531
163
  * @param context - Additional context including path, operation, and cause
532
164
  * @returns A configured Error object with code and context properties
165
+ *
166
+ * @example Creating a file system error
167
+ * ```typescript
168
+ * throw createFileSystemError(
169
+ * 'Cannot read file',
170
+ * 'FS_READ_ERROR',
171
+ * { path: './missing.txt', operation: 'read' }
172
+ * )
173
+ * ```
533
174
  */
534
175
  function createFileSystemError(message, code, context) {
535
- const error = createError(message);
536
- defineProperties(error, {
176
+ const error = index_cjs_js$6.createError(message);
177
+ index_cjs_js$2.defineProperties(error, {
537
178
  code: { value: code, enumerable: true },
538
179
  context: { value: context, enumerable: true },
539
180
  });
@@ -547,7 +188,7 @@ function createFileSystemError(message, code, context) {
547
188
  * @returns File contents as string
548
189
  * @throws {Error} If file doesn't exist or can't be read
549
190
  *
550
- * @example
191
+ * @example Reading file contents
551
192
  * ```typescript
552
193
  * import { readFileContent } from '@hyperfrontend/project-scope'
553
194
  *
@@ -574,6 +215,12 @@ function readFileContent(filePath, encoding = 'utf-8') {
574
215
  * @param filePath - Path to file
575
216
  * @returns File contents as Buffer
576
217
  * @throws {Error} If file doesn't exist or can't be read
218
+ *
219
+ * @example Reading file as buffer
220
+ * ```typescript
221
+ * const buffer = readFileBuffer('./image.png')
222
+ * console.log(buffer.length) // File size in bytes
223
+ * ```
577
224
  */
578
225
  function readFileBuffer(filePath) {
579
226
  if (!node_fs.existsSync(filePath)) {
@@ -592,6 +239,14 @@ function readFileBuffer(filePath) {
592
239
  * @param filePath - Path to file
593
240
  * @param encoding - File encoding (default: utf-8)
594
241
  * @returns File contents or null if file doesn't exist
242
+ *
243
+ * @example Reading file if it exists
244
+ * ```typescript
245
+ * const content = readFileIfExists('./optional-config.json')
246
+ * if (content) {
247
+ * // File existed, use content
248
+ * }
249
+ * ```
595
250
  */
596
251
  function readFileIfExists(filePath, encoding = 'utf-8') {
597
252
  if (!node_fs.existsSync(filePath)) {
@@ -613,7 +268,7 @@ function readFileIfExists(filePath, encoding = 'utf-8') {
613
268
  * @returns Parsed JSON object
614
269
  * @throws {Error} If file doesn't exist (when no default provided) or contains invalid JSON
615
270
  *
616
- * @example
271
+ * @example Reading JSON file
617
272
  * ```typescript
618
273
  * import { readJsonFile } from '@hyperfrontend/project-scope'
619
274
  *
@@ -636,7 +291,7 @@ function readJsonFile(filePath, options) {
636
291
  }
637
292
  try {
638
293
  const content = node_fs.readFileSync(filePath, { encoding: 'utf-8' });
639
- return parse(content);
294
+ return index_cjs_js$5.parse(content);
640
295
  }
641
296
  catch (error) {
642
297
  if (error?.code === 'ENOENT') {
@@ -656,196 +311,26 @@ function readJsonFile(filePath, options) {
656
311
  *
657
312
  * @param filePath - Path to JSON file
658
313
  * @returns Parsed JSON object or null if file doesn't exist or is invalid
659
- */
660
- function readJsonFileIfExists(filePath) {
661
- if (!node_fs.existsSync(filePath)) {
662
- return null;
663
- }
664
- try {
665
- const content = node_fs.readFileSync(filePath, { encoding: 'utf-8' });
666
- return parse(content);
667
- }
668
- catch {
669
- return null;
670
- }
671
- }
672
-
673
- const fsWriteLogger = createScopedLogger('project-scope:fs:write');
674
- /**
675
- * Ensure directory exists, create recursively if not.
676
- *
677
- * @param dirPath - Directory path to ensure exists
678
- */
679
- function ensureDir(dirPath) {
680
- if (!node_fs.existsSync(dirPath)) {
681
- fsWriteLogger.debug('Creating directory recursively', { path: dirPath });
682
- node_fs.mkdirSync(dirPath, { recursive: true });
683
- }
684
- }
685
- /**
686
- * Write string content to file.
687
- * Creates parent directories if needed.
688
- *
689
- * @param filePath - Absolute or relative path to the target file
690
- * @param content - String content to write to the file
691
- * @param options - Optional write configuration (encoding, mode)
692
- * @throws {Error} If write fails
693
- *
694
- * @example
695
- * ```typescript
696
- * import { writeFileContent } from '@hyperfrontend/project-scope'
697
- *
698
- * // Write a simple text file
699
- * writeFileContent('./output/data.txt', 'Hello, World!')
700
- *
701
- * // Write with custom encoding
702
- * writeFileContent('./output/data.txt', 'Content', { encoding: 'utf-8' })
703
- * ```
704
- */
705
- function writeFileContent(filePath, content, options) {
706
- try {
707
- fsWriteLogger.debug('Writing file content', { path: filePath, size: content.length, encoding: options?.encoding ?? 'utf-8' });
708
- ensureDir(node_path.dirname(filePath));
709
- node_fs.writeFileSync(filePath, content, {
710
- encoding: options?.encoding ?? 'utf-8',
711
- mode: options?.mode,
712
- });
713
- fsWriteLogger.debug('File written successfully', { path: filePath });
714
- }
715
- catch (error) {
716
- fsWriteLogger.warn('Failed to write file', { path: filePath, error: error instanceof Error ? error.message : String(error) });
717
- throw createFileSystemError(`Failed to write file: ${filePath}`, 'FS_WRITE_ERROR', { path: filePath, operation: 'write', cause: error });
718
- }
719
- }
720
- /**
721
- * Write Buffer to file.
722
- * Creates parent directories if needed.
723
314
  *
724
- * @param filePath - Absolute or relative path to the target file
725
- * @param content - Buffer containing binary data to write
726
- * @param options - Optional write configuration (mode)
727
- * @throws {Error} If write fails
728
- */
729
- function writeFileBuffer(filePath, content, options) {
730
- try {
731
- fsWriteLogger.debug('Writing file buffer', { path: filePath, size: content.length });
732
- ensureDir(node_path.dirname(filePath));
733
- node_fs.writeFileSync(filePath, content, { mode: options?.mode });
734
- fsWriteLogger.debug('Buffer written successfully', { path: filePath });
735
- }
736
- catch (error) {
737
- fsWriteLogger.warn('Failed to write buffer', { path: filePath, error: error instanceof Error ? error.message : String(error) });
738
- throw createFileSystemError(`Failed to write file: ${filePath}`, 'FS_WRITE_ERROR', { path: filePath, operation: 'write', cause: error });
739
- }
740
- }
741
- /**
742
- * Write JSON data to file with formatting.
743
- * Creates parent directories if needed.
744
- *
745
- * @param filePath - Absolute or relative path to the target JSON file
746
- * @param data - Object or value to serialize as JSON
747
- * @param options - Optional write configuration (indent, encoding, mode)
748
- * @throws {Error} If write fails
749
- *
750
- * @example
315
+ * @example Reading JSON file if it exists
751
316
  * ```typescript
752
- * import { writeJsonFile } from '@hyperfrontend/project-scope'
753
- *
754
- * // Write object to JSON file
755
- * writeJsonFile('./config.json', { port: 3000, debug: true })
756
- *
757
- * // Write with custom indentation
758
- * writeJsonFile('./config.json', data, { indent: 4 })
317
+ * interface UserSettings { theme: string }
318
+ * const settings = readJsonFileIfExists<UserSettings>('./user-settings.json')
319
+ * const theme = settings?.theme ?? 'default'
759
320
  * ```
760
321
  */
761
- function writeJsonFile(filePath, data, options) {
762
- try {
763
- fsWriteLogger.debug('Writing JSON file', { path: filePath, indent: options?.indent ?? 2 });
764
- const indent = options?.indent ?? 2;
765
- const content = stringify(data, null, indent) + '\n';
766
- writeFileContent(filePath, content, options);
767
- fsWriteLogger.debug('JSON file written successfully', { path: filePath });
768
- }
769
- catch (error) {
770
- if (error?.code === 'FS_WRITE_ERROR') {
771
- throw error;
772
- }
773
- fsWriteLogger.warn('Failed to write JSON file', { path: filePath, error: error instanceof Error ? error.message : String(error) });
774
- throw createFileSystemError(`Failed to write JSON file: ${filePath}`, 'FS_WRITE_ERROR', {
775
- path: filePath,
776
- operation: 'write',
777
- cause: error,
778
- });
779
- }
780
- }
781
-
782
- /**
783
- * Get file stats with error handling.
784
- *
785
- * @param filePath - Path to file
786
- * @param followSymlinks - Whether to follow symlinks (default: true)
787
- * @returns File stats or null if path doesn't exist
788
- */
789
- function getFileStat(filePath, followSymlinks = true) {
322
+ function readJsonFileIfExists(filePath) {
790
323
  if (!node_fs.existsSync(filePath)) {
791
324
  return null;
792
325
  }
793
326
  try {
794
- const stat = followSymlinks ? node_fs.statSync(filePath) : node_fs.lstatSync(filePath);
795
- return {
796
- isFile: stat.isFile(),
797
- isDirectory: stat.isDirectory(),
798
- isSymlink: stat.isSymbolicLink(),
799
- size: stat.size,
800
- created: stat.birthtime,
801
- modified: stat.mtime,
802
- accessed: stat.atime,
803
- mode: stat.mode,
804
- };
327
+ const content = node_fs.readFileSync(filePath, { encoding: 'utf-8' });
328
+ return index_cjs_js$5.parse(content);
805
329
  }
806
330
  catch {
807
331
  return null;
808
332
  }
809
333
  }
810
- /**
811
- * Check if path is a file.
812
- *
813
- * @param filePath - Path to check
814
- * @returns True if path is a file
815
- */
816
- function isFile(filePath) {
817
- const stats = getFileStat(filePath);
818
- return stats?.isFile ?? false;
819
- }
820
- /**
821
- * Check if path is a directory.
822
- *
823
- * @param dirPath - Path to check
824
- * @returns True if path is a directory
825
- */
826
- function isDirectory(dirPath) {
827
- const stats = getFileStat(dirPath);
828
- return stats?.isDirectory ?? false;
829
- }
830
- /**
831
- * Check if path is a symbolic link.
832
- *
833
- * @param linkPath - Path to check
834
- * @returns True if path is a symlink
835
- */
836
- function isSymlink(linkPath) {
837
- const stats = getFileStat(linkPath, false);
838
- return stats?.isSymlink ?? false;
839
- }
840
- /**
841
- * Check if path exists.
842
- *
843
- * @param filePath - Path to check
844
- * @returns True if path exists
845
- */
846
- function exists(filePath) {
847
- return node_fs.existsSync(filePath);
848
- }
849
334
 
850
335
  const fsDirLogger = createScopedLogger('project-scope:fs:dir');
851
336
  /**
@@ -855,7 +340,7 @@ const fsDirLogger = createScopedLogger('project-scope:fs:dir');
855
340
  * @returns Array of entries with metadata for each file/directory
856
341
  * @throws {Error} If directory doesn't exist or isn't a directory
857
342
  *
858
- * @example
343
+ * @example Listing directory contents
859
344
  * ```typescript
860
345
  * import { readDirectory } from '@hyperfrontend/project-scope'
861
346
  *
@@ -902,7 +387,7 @@ function readDirectory(dirPath) {
902
387
  * @param options - Configuration for depth limit, hidden files, and symlinks
903
388
  * @returns Flat array of all entries found during traversal
904
389
  *
905
- * @example
390
+ * @example Recursive directory listing with options
906
391
  * ```typescript
907
392
  * import { readDirectoryRecursive } from '@hyperfrontend/project-scope'
908
393
  *
@@ -940,17 +425,14 @@ function readDirectoryRecursive(dirPath, options) {
940
425
  entries = readDirectory(currentPath);
941
426
  }
942
427
  catch {
943
- // Skip inaccessible directories
944
428
  fsDirLogger.debug('Skipping inaccessible directory', { path: currentPath });
945
429
  return;
946
430
  }
947
431
  for (const entry of entries) {
948
- // Skip hidden files/dirs if not included
949
432
  if (!includeHidden && entry.name.startsWith('.')) {
950
433
  continue;
951
434
  }
952
435
  results.push({ ...entry, depth });
953
- // Recurse into directories
954
436
  if (entry.isDirectory || (entry.isSymlink && followSymlinks && isDirectory(entry.path))) {
955
437
  walk(entry.path, depth + 1);
956
438
  }
@@ -966,6 +448,15 @@ function readDirectoryRecursive(dirPath, options) {
966
448
  * @param dirPath - Path where the directory should be created
967
449
  * @param options - Creation options
968
450
  * @param options.recursive - Create parent directories if missing (default: true)
451
+ *
452
+ * @example Creating directories
453
+ * ```typescript
454
+ * // Create nested directories
455
+ * createDirectory('./output/reports/2024')
456
+ *
457
+ * // Create single directory without parents
458
+ * createDirectory('./logs', { recursive: false })
459
+ * ```
969
460
  */
970
461
  function createDirectory(dirPath, options) {
971
462
  const recursive = options?.recursive ?? true;
@@ -979,6 +470,15 @@ function createDirectory(dirPath, options) {
979
470
  * @param options - Removal configuration
980
471
  * @param options.recursive - Delete directory contents recursively
981
472
  * @param options.force - Ignore errors if directory doesn't exist
473
+ *
474
+ * @example Removing directories
475
+ * ```typescript
476
+ * // Remove directory and all contents
477
+ * removeDirectory('./temp', { recursive: true })
478
+ *
479
+ * // Safe removal (no error if missing)
480
+ * removeDirectory('./cache', { recursive: true, force: true })
481
+ * ```
982
482
  */
983
483
  function removeDirectory(dirPath, options) {
984
484
  fsDirLogger.debug('Removing directory', { path: dirPath, recursive: options?.recursive, force: options?.force });
@@ -988,17 +488,6 @@ function removeDirectory(dirPath, options) {
988
488
  });
989
489
  }
990
490
 
991
- /**
992
- * Join path segments.
993
- * Uses platform-specific separators (e.g., / or \).
994
- *
995
- * @param paths - Path segments to join
996
- * @returns Joined path
997
- */
998
- function join(...paths) {
999
- return node_path.join(...paths);
1000
- }
1001
-
1002
491
  const fsTraversalLogger = createScopedLogger('project-scope:fs:traversal');
1003
492
  /**
1004
493
  * Generic upward directory traversal.
@@ -1007,6 +496,15 @@ const fsTraversalLogger = createScopedLogger('project-scope:fs:traversal');
1007
496
  * @param startPath - Starting directory
1008
497
  * @param predicate - Function to test each directory
1009
498
  * @returns First matching directory or null
499
+ *
500
+ * @example Finding directory containing README
501
+ * ```typescript
502
+ * // Find first directory containing a README
503
+ * const readmeDir = traverseUpward('./src/utils', (dir) =>
504
+ * existsSync(join(dir, 'README.md'))
505
+ * )
506
+ * // => '/project' or null
507
+ * ```
1010
508
  */
1011
509
  function traverseUpward(startPath, predicate) {
1012
510
  fsTraversalLogger.debug('Starting upward traversal', { startPath });
@@ -1019,7 +517,6 @@ function traverseUpward(startPath, predicate) {
1019
517
  }
1020
518
  currentPath = node_path.dirname(currentPath);
1021
519
  }
1022
- // Check root directory
1023
520
  if (predicate(rootPath)) {
1024
521
  fsTraversalLogger.debug('Upward traversal found match at root', { startPath, foundPath: rootPath });
1025
522
  return rootPath;
@@ -1033,6 +530,17 @@ function traverseUpward(startPath, predicate) {
1033
530
  * @param startPath - Starting directory
1034
531
  * @param markers - Array of marker file names to search for
1035
532
  * @returns First directory containing any marker, or null
533
+ *
534
+ * @example Finding project root by marker files
535
+ * ```typescript
536
+ * // Find project root by looking for common marker files
537
+ * const projectRoot = locateByMarkers('./src/components', [
538
+ * 'package.json',
539
+ * 'nx.json',
540
+ * 'tsconfig.base.json'
541
+ * ])
542
+ * // => '/workspace/my-project'
543
+ * ```
1036
544
  */
1037
545
  function locateByMarkers(startPath, markers) {
1038
546
  fsTraversalLogger.debug('Locating by markers', { startPath, markers });
@@ -1048,12 +556,141 @@ function locateByMarkers(startPath, markers) {
1048
556
  * @param startPath - Starting directory
1049
557
  * @param test - Function to test if directory matches criteria
1050
558
  * @returns Matching directory path or null
559
+ *
560
+ * @example Finding directory with specific config
561
+ * ```typescript
562
+ * // Find directory with a specific config
563
+ * const configDir = findUpwardWhere('./deep/nested/path', (dir) =>
564
+ * existsSync(join(dir, '.eslintrc.js'))
565
+ * )
566
+ * ```
1051
567
  */
1052
568
  function findUpwardWhere(startPath, test) {
1053
569
  fsTraversalLogger.debug('Finding upward where condition met', { startPath });
1054
570
  return traverseUpward(startPath, test);
1055
571
  }
1056
572
 
573
+ const fsWriteLogger = createScopedLogger('project-scope:fs:write');
574
+ /**
575
+ * Ensure directory exists, create recursively if not.
576
+ *
577
+ * @param dirPath - Directory path to ensure exists
578
+ *
579
+ * @example Ensuring directory exists
580
+ * ```typescript
581
+ * ensureDir('./output/reports')
582
+ * // Directory now exists (created if missing)
583
+ * ```
584
+ */
585
+ function ensureDir(dirPath) {
586
+ if (!node_fs.existsSync(dirPath)) {
587
+ fsWriteLogger.debug('Creating directory recursively', { path: dirPath });
588
+ node_fs.mkdirSync(dirPath, { recursive: true });
589
+ }
590
+ }
591
+ /**
592
+ * Write string content to file.
593
+ * Creates parent directories if needed.
594
+ *
595
+ * @param filePath - Absolute or relative path to the target file
596
+ * @param content - String content to write to the file
597
+ * @param options - Optional write configuration (encoding, mode)
598
+ * @throws {Error} If write fails
599
+ *
600
+ * @example Writing text content to file
601
+ * ```typescript
602
+ * import { writeFileContent } from '@hyperfrontend/project-scope'
603
+ *
604
+ * // Write a simple text file
605
+ * writeFileContent('./output/data.txt', 'Hello, World!')
606
+ *
607
+ * // Write with custom encoding
608
+ * writeFileContent('./output/data.txt', 'Content', { encoding: 'utf-8' })
609
+ * ```
610
+ */
611
+ function writeFileContent(filePath, content, options) {
612
+ try {
613
+ fsWriteLogger.debug('Writing file content', { path: filePath, size: content.length, encoding: options?.encoding ?? 'utf-8' });
614
+ ensureDir(node_path.dirname(filePath));
615
+ node_fs.writeFileSync(filePath, content, {
616
+ encoding: options?.encoding ?? 'utf-8',
617
+ mode: options?.mode,
618
+ });
619
+ fsWriteLogger.debug('File written successfully', { path: filePath });
620
+ }
621
+ catch (error) {
622
+ fsWriteLogger.warn('Failed to write file', { path: filePath, error: error instanceof Error ? error.message : String(error) });
623
+ throw createFileSystemError(`Failed to write file: ${filePath}`, 'FS_WRITE_ERROR', { path: filePath, operation: 'write', cause: error });
624
+ }
625
+ }
626
+ /**
627
+ * Write Buffer to file.
628
+ * Creates parent directories if needed.
629
+ *
630
+ * @param filePath - Absolute or relative path to the target file
631
+ * @param content - Buffer containing binary data to write
632
+ * @param options - Optional write configuration (mode)
633
+ * @throws {Error} If write fails
634
+ *
635
+ * @example Writing binary buffer to file
636
+ * ```typescript
637
+ * const imageBuffer = Buffer.from([0x89, 0x50, 0x4e, 0x47])
638
+ * writeFileBuffer('./output/image.png', imageBuffer)
639
+ * ```
640
+ */
641
+ function writeFileBuffer(filePath, content, options) {
642
+ try {
643
+ fsWriteLogger.debug('Writing file buffer', { path: filePath, size: content.length });
644
+ ensureDir(node_path.dirname(filePath));
645
+ node_fs.writeFileSync(filePath, content, { mode: options?.mode });
646
+ fsWriteLogger.debug('Buffer written successfully', { path: filePath });
647
+ }
648
+ catch (error) {
649
+ fsWriteLogger.warn('Failed to write buffer', { path: filePath, error: error instanceof Error ? error.message : String(error) });
650
+ throw createFileSystemError(`Failed to write file: ${filePath}`, 'FS_WRITE_ERROR', { path: filePath, operation: 'write', cause: error });
651
+ }
652
+ }
653
+ /**
654
+ * Write JSON data to file with formatting.
655
+ * Creates parent directories if needed.
656
+ *
657
+ * @param filePath - Absolute or relative path to the target JSON file
658
+ * @param data - Object or value to serialize as JSON
659
+ * @param options - Optional write configuration (indent, encoding, mode)
660
+ * @throws {Error} If write fails
661
+ *
662
+ * @example Writing JSON data to file
663
+ * ```typescript
664
+ * import { writeJsonFile } from '@hyperfrontend/project-scope'
665
+ *
666
+ * // Write object to JSON file
667
+ * writeJsonFile('./config.json', { port: 3000, debug: true })
668
+ *
669
+ * // Write with custom indentation
670
+ * writeJsonFile('./config.json', data, { indent: 4 })
671
+ * ```
672
+ */
673
+ function writeJsonFile(filePath, data, options) {
674
+ try {
675
+ fsWriteLogger.debug('Writing JSON file', { path: filePath, indent: options?.indent ?? 2 });
676
+ const indent = options?.indent ?? 2;
677
+ const content = index_cjs_js$5.stringify(data, null, indent) + '\n';
678
+ writeFileContent(filePath, content, options);
679
+ fsWriteLogger.debug('JSON file written successfully', { path: filePath });
680
+ }
681
+ catch (error) {
682
+ if (error?.code === 'FS_WRITE_ERROR') {
683
+ throw error;
684
+ }
685
+ fsWriteLogger.warn('Failed to write JSON file', { path: filePath, error: error instanceof Error ? error.message : String(error) });
686
+ throw createFileSystemError(`Failed to write JSON file: ${filePath}`, 'FS_WRITE_ERROR', {
687
+ path: filePath,
688
+ operation: 'write',
689
+ cause: error,
690
+ });
691
+ }
692
+ }
693
+
1057
694
  exports.createDirectory = createDirectory;
1058
695
  exports.createFileSystemError = createFileSystemError;
1059
696
  exports.ensureDir = ensureDir;
@@ -1076,4 +713,3 @@ exports.traverseUpward = traverseUpward;
1076
713
  exports.writeFileBuffer = writeFileBuffer;
1077
714
  exports.writeFileContent = writeFileContent;
1078
715
  exports.writeJsonFile = writeJsonFile;
1079
- //# sourceMappingURL=index.cjs.js.map