@hyperfrontend/project-scope 0.2.1 → 0.2.3

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 (443) hide show
  1. package/CHANGELOG.md +14 -1
  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/guard/index.cjs.js +7 -0
  31. package/_shared/core/fs/guard/index.esm.js +5 -0
  32. package/_shared/core/fs/stat/index.cjs.js +47 -0
  33. package/_shared/core/fs/stat/index.esm.js +41 -0
  34. package/_shared/core/path/confine/index.cjs.js +22 -0
  35. package/_shared/core/path/confine/index.esm.js +19 -0
  36. package/_shared/core/path/join/index.cjs.js +13 -0
  37. package/_shared/core/path/join/index.esm.js +10 -0
  38. package/_shared/core/path/normalize/index.cjs.js +37 -0
  39. package/_shared/core/path/normalize/index.esm.js +31 -0
  40. package/_shared/core/path/resolve/index.cjs.js +47 -0
  41. package/_shared/core/path/resolve/index.esm.js +41 -0
  42. package/_shared/core/path/segments/index.cjs.js +38 -0
  43. package/_shared/core/path/segments/index.esm.js +31 -0
  44. package/_shared/core/patterns/glob/index.cjs.js +145 -0
  45. package/_shared/core/patterns/glob/index.esm.js +136 -0
  46. package/_shared/core/platform/detect/index.cjs.js +103 -0
  47. package/_shared/core/platform/detect/index.esm.js +95 -0
  48. package/_shared/core/platform/line-endings/index.cjs.js +52 -0
  49. package/_shared/core/platform/line-endings/index.esm.js +44 -0
  50. package/_shared/project/config/patterns/index.cjs.js +172 -0
  51. package/_shared/project/config/patterns/index.esm.js +169 -0
  52. package/_shared/tech/monorepo/pnpm-workspaces/index.cjs.js +33 -0
  53. package/_shared/tech/monorepo/pnpm-workspaces/index.esm.js +31 -0
  54. package/_shared/tech/shared-utils/detector-helpers/index.cjs.js +48 -0
  55. package/_shared/tech/shared-utils/detector-helpers/index.esm.js +43 -0
  56. package/_shared/vfs/types/index.cjs.js +14 -0
  57. package/_shared/vfs/types/index.esm.js +12 -0
  58. package/cli/index.cjs.js +1706 -1910
  59. package/cli/index.d.ts +273 -7
  60. package/cli/index.d.ts.map +1 -1
  61. package/cli/index.esm.js +1593 -1797
  62. package/core/encoding/index.cjs.js +86 -401
  63. package/core/encoding/index.d.ts +186 -3
  64. package/core/encoding/index.d.ts.map +1 -1
  65. package/core/encoding/index.esm.js +78 -392
  66. package/core/fs/index.cjs.js +243 -583
  67. package/core/fs/index.d.ts +479 -6
  68. package/core/fs/index.d.ts.map +1 -1
  69. package/core/fs/index.esm.js +233 -573
  70. package/core/index.cjs.js +526 -1746
  71. package/core/index.d.ts +486 -9
  72. package/core/index.d.ts.map +1 -1
  73. package/core/index.esm.js +515 -1732
  74. package/core/path/index.cjs.js +8 -234
  75. package/core/path/index.d.ts +327 -5
  76. package/core/path/index.d.ts.map +1 -1
  77. package/core/path/index.esm.js +8 -235
  78. package/core/platform/index.cjs.js +5 -216
  79. package/core/platform/index.d.ts +185 -3
  80. package/core/platform/index.d.ts.map +1 -1
  81. package/core/platform/index.esm.js +3 -212
  82. package/heuristics/dependencies/index.cjs.js +105 -493
  83. package/heuristics/dependencies/index.d.ts +99 -2
  84. package/heuristics/dependencies/index.d.ts.map +1 -1
  85. package/heuristics/dependencies/index.esm.js +81 -469
  86. package/heuristics/entry-points/index.cjs.js +93 -796
  87. package/heuristics/entry-points/index.d.ts +123 -2
  88. package/heuristics/entry-points/index.d.ts.map +1 -1
  89. package/heuristics/entry-points/index.esm.js +74 -777
  90. package/heuristics/framework/index.cjs.js +1483 -1411
  91. package/heuristics/framework/index.d.ts +104 -2
  92. package/heuristics/framework/index.d.ts.map +1 -1
  93. package/heuristics/framework/index.esm.js +1419 -1347
  94. package/heuristics/index.cjs.js +3220 -3306
  95. package/heuristics/index.d.ts +4 -5
  96. package/heuristics/index.d.ts.map +1 -1
  97. package/heuristics/index.esm.js +3244 -3330
  98. package/heuristics/project-type/index.cjs.js +1489 -1438
  99. package/heuristics/project-type/index.d.ts +64 -2
  100. package/heuristics/project-type/index.d.ts.map +1 -1
  101. package/heuristics/project-type/index.esm.js +1419 -1368
  102. package/index.cjs.js +3058 -3532
  103. package/index.d.ts +44 -10
  104. package/index.d.ts.map +1 -1
  105. package/index.esm.js +2914 -3376
  106. package/models/index.cjs.js +0 -1
  107. package/models/index.d.ts +20 -14
  108. package/models/index.d.ts.map +1 -1
  109. package/models/index.esm.js +0 -1
  110. package/nx/index.cjs.js +166 -579
  111. package/nx/index.d.ts +279 -4
  112. package/nx/index.d.ts.map +1 -1
  113. package/nx/index.esm.js +148 -556
  114. package/package.json +13 -12
  115. package/project/config/index.cjs.js +127 -1063
  116. package/project/config/index.d.ts +202 -4
  117. package/project/config/index.d.ts.map +1 -1
  118. package/project/config/index.esm.js +110 -1044
  119. package/project/index.cjs.js +328 -1101
  120. package/project/index.d.ts +4 -5
  121. package/project/index.d.ts.map +1 -1
  122. package/project/index.esm.js +307 -1077
  123. package/project/package/index.cjs.js +196 -473
  124. package/project/package/index.d.ts +280 -3
  125. package/project/package/index.d.ts.map +1 -1
  126. package/project/package/index.esm.js +183 -459
  127. package/project/root/index.cjs.js +109 -417
  128. package/project/root/index.d.ts +83 -2
  129. package/project/root/index.d.ts.map +1 -1
  130. package/project/root/index.esm.js +98 -406
  131. package/project/traversal/index.cjs.js +96 -622
  132. package/project/traversal/index.d.ts +165 -3
  133. package/project/traversal/index.d.ts.map +1 -1
  134. package/project/traversal/index.esm.js +82 -608
  135. package/tech/backend/index.cjs.js +223 -508
  136. package/tech/backend/index.d.ts +205 -8
  137. package/tech/backend/index.d.ts.map +1 -1
  138. package/tech/backend/index.esm.js +202 -487
  139. package/tech/build/index.cjs.js +350 -636
  140. package/tech/build/index.d.ts +276 -10
  141. package/tech/build/index.d.ts.map +1 -1
  142. package/tech/build/index.esm.js +328 -614
  143. package/tech/frontend/index.cjs.js +507 -685
  144. package/tech/frontend/index.d.ts +379 -15
  145. package/tech/frontend/index.d.ts.map +1 -1
  146. package/tech/frontend/index.esm.js +483 -661
  147. package/tech/index.cjs.js +1581 -1420
  148. package/tech/index.d.ts +55 -32
  149. package/tech/index.d.ts.map +1 -1
  150. package/tech/index.esm.js +1515 -1354
  151. package/tech/legacy/index.cjs.js +99 -449
  152. package/tech/legacy/index.d.ts +125 -7
  153. package/tech/legacy/index.d.ts.map +1 -1
  154. package/tech/legacy/index.esm.js +81 -431
  155. package/tech/linting/index.cjs.js +138 -523
  156. package/tech/linting/index.d.ts +129 -7
  157. package/tech/linting/index.d.ts.map +1 -1
  158. package/tech/linting/index.esm.js +118 -503
  159. package/tech/monorepo/index.cjs.js +246 -573
  160. package/tech/monorepo/index.d.ts +241 -10
  161. package/tech/monorepo/index.d.ts.map +1 -1
  162. package/tech/monorepo/index.esm.js +226 -553
  163. package/tech/testing/index.cjs.js +216 -571
  164. package/tech/testing/index.d.ts +176 -8
  165. package/tech/testing/index.d.ts.map +1 -1
  166. package/tech/testing/index.esm.js +198 -553
  167. package/tech/types/index.cjs.js +123 -506
  168. package/tech/types/index.d.ts +120 -2
  169. package/tech/types/index.d.ts.map +1 -1
  170. package/tech/types/index.esm.js +101 -484
  171. package/vfs/index.cjs.js +647 -1142
  172. package/vfs/index.d.ts +360 -6
  173. package/vfs/index.d.ts.map +1 -1
  174. package/vfs/index.esm.js +672 -1167
  175. package/ARCHITECTURE.md +0 -370
  176. package/analyze.d.ts +0 -33
  177. package/analyze.d.ts.map +0 -1
  178. package/cli/commands/analyze.d.ts +0 -28
  179. package/cli/commands/analyze.d.ts.map +0 -1
  180. package/cli/commands/config.d.ts +0 -27
  181. package/cli/commands/config.d.ts.map +0 -1
  182. package/cli/commands/deps.d.ts +0 -24
  183. package/cli/commands/deps.d.ts.map +0 -1
  184. package/cli/commands/tree.d.ts +0 -36
  185. package/cli/commands/tree.d.ts.map +0 -1
  186. package/cli/index.cjs.js.map +0 -1
  187. package/cli/index.esm.js.map +0 -1
  188. package/cli/run.d.ts +0 -25
  189. package/cli/run.d.ts.map +0 -1
  190. package/cli/types.d.ts +0 -55
  191. package/cli/types.d.ts.map +0 -1
  192. package/core/cache.d.ts +0 -158
  193. package/core/cache.d.ts.map +0 -1
  194. package/core/encoding/convert.d.ts +0 -32
  195. package/core/encoding/convert.d.ts.map +0 -1
  196. package/core/encoding/detect.d.ts +0 -91
  197. package/core/encoding/detect.d.ts.map +0 -1
  198. package/core/encoding/index.cjs.js.map +0 -1
  199. package/core/encoding/index.esm.js.map +0 -1
  200. package/core/errors/structured-errors.d.ts +0 -66
  201. package/core/errors/structured-errors.d.ts.map +0 -1
  202. package/core/fs/directory.d.ts +0 -91
  203. package/core/fs/directory.d.ts.map +0 -1
  204. package/core/fs/index.cjs.js.map +0 -1
  205. package/core/fs/index.esm.js.map +0 -1
  206. package/core/fs/read.d.ts +0 -94
  207. package/core/fs/read.d.ts.map +0 -1
  208. package/core/fs/stat.d.ts +0 -58
  209. package/core/fs/stat.d.ts.map +0 -1
  210. package/core/fs/traversal.d.ts +0 -26
  211. package/core/fs/traversal.d.ts.map +0 -1
  212. package/core/fs/write.d.ts +0 -75
  213. package/core/fs/write.d.ts.map +0 -1
  214. package/core/index.cjs.js.map +0 -1
  215. package/core/index.esm.js.map +0 -1
  216. package/core/logger.d.ts +0 -111
  217. package/core/logger.d.ts.map +0 -1
  218. package/core/path/index.cjs.js.map +0 -1
  219. package/core/path/index.esm.js.map +0 -1
  220. package/core/path/join.d.ts +0 -17
  221. package/core/path/join.d.ts.map +0 -1
  222. package/core/path/normalize.d.ts +0 -37
  223. package/core/path/normalize.d.ts.map +0 -1
  224. package/core/path/resolve.d.ts +0 -52
  225. package/core/path/resolve.d.ts.map +0 -1
  226. package/core/path/segments.d.ts +0 -59
  227. package/core/path/segments.d.ts.map +0 -1
  228. package/core/patterns/glob.d.ts +0 -42
  229. package/core/patterns/glob.d.ts.map +0 -1
  230. package/core/platform/detect.d.ts +0 -66
  231. package/core/platform/detect.d.ts.map +0 -1
  232. package/core/platform/index.cjs.js.map +0 -1
  233. package/core/platform/index.esm.js.map +0 -1
  234. package/core/platform/line-endings.d.ts +0 -48
  235. package/core/platform/line-endings.d.ts.map +0 -1
  236. package/heuristics/dependencies/analyze.d.ts +0 -77
  237. package/heuristics/dependencies/analyze.d.ts.map +0 -1
  238. package/heuristics/dependencies/index.cjs.js.map +0 -1
  239. package/heuristics/dependencies/index.esm.js.map +0 -1
  240. package/heuristics/entry-points/discover.d.ts +0 -113
  241. package/heuristics/entry-points/discover.d.ts.map +0 -1
  242. package/heuristics/entry-points/index.cjs.js.map +0 -1
  243. package/heuristics/entry-points/index.esm.js.map +0 -1
  244. package/heuristics/framework/identify.d.ts +0 -84
  245. package/heuristics/framework/identify.d.ts.map +0 -1
  246. package/heuristics/framework/index.cjs.js.map +0 -1
  247. package/heuristics/framework/index.esm.js.map +0 -1
  248. package/heuristics/index.cjs.js.map +0 -1
  249. package/heuristics/index.esm.js.map +0 -1
  250. package/heuristics/project-type/detect.d.ts +0 -61
  251. package/heuristics/project-type/detect.d.ts.map +0 -1
  252. package/heuristics/project-type/index.cjs.js.map +0 -1
  253. package/heuristics/project-type/index.esm.js.map +0 -1
  254. package/index.cjs.js.map +0 -1
  255. package/index.esm.js.map +0 -1
  256. package/models/index.cjs.js.map +0 -1
  257. package/models/index.esm.js.map +0 -1
  258. package/nx/detect.d.ts +0 -105
  259. package/nx/detect.d.ts.map +0 -1
  260. package/nx/devkit-loader.d.ts +0 -62
  261. package/nx/devkit-loader.d.ts.map +0 -1
  262. package/nx/index.cjs.js.map +0 -1
  263. package/nx/index.esm.js.map +0 -1
  264. package/nx/project-config.d.ts +0 -111
  265. package/nx/project-config.d.ts.map +0 -1
  266. package/project/config/detect.d.ts +0 -77
  267. package/project/config/detect.d.ts.map +0 -1
  268. package/project/config/index.cjs.js.map +0 -1
  269. package/project/config/index.esm.js.map +0 -1
  270. package/project/config/parse.d.ts +0 -53
  271. package/project/config/parse.d.ts.map +0 -1
  272. package/project/config/patterns.d.ts +0 -31
  273. package/project/config/patterns.d.ts.map +0 -1
  274. package/project/index.cjs.js.map +0 -1
  275. package/project/index.esm.js.map +0 -1
  276. package/project/package/dependencies.d.ts +0 -101
  277. package/project/package/dependencies.d.ts.map +0 -1
  278. package/project/package/index.cjs.js.map +0 -1
  279. package/project/package/index.esm.js.map +0 -1
  280. package/project/package/read.d.ts +0 -67
  281. package/project/package/read.d.ts.map +0 -1
  282. package/project/root/detect.d.ts +0 -65
  283. package/project/root/detect.d.ts.map +0 -1
  284. package/project/root/index.cjs.js.map +0 -1
  285. package/project/root/index.esm.js.map +0 -1
  286. package/project/traversal/index.cjs.js.map +0 -1
  287. package/project/traversal/index.esm.js.map +0 -1
  288. package/project/traversal/search.d.ts +0 -59
  289. package/project/traversal/search.d.ts.map +0 -1
  290. package/project/traversal/walk.d.ts +0 -63
  291. package/project/traversal/walk.d.ts.map +0 -1
  292. package/tech/backend/detect-all.d.ts +0 -13
  293. package/tech/backend/detect-all.d.ts.map +0 -1
  294. package/tech/backend/express.d.ts +0 -11
  295. package/tech/backend/express.d.ts.map +0 -1
  296. package/tech/backend/fastify.d.ts +0 -11
  297. package/tech/backend/fastify.d.ts.map +0 -1
  298. package/tech/backend/hono.d.ts +0 -11
  299. package/tech/backend/hono.d.ts.map +0 -1
  300. package/tech/backend/index.cjs.js.map +0 -1
  301. package/tech/backend/index.esm.js.map +0 -1
  302. package/tech/backend/koa.d.ts +0 -11
  303. package/tech/backend/koa.d.ts.map +0 -1
  304. package/tech/backend/nestjs.d.ts +0 -11
  305. package/tech/backend/nestjs.d.ts.map +0 -1
  306. package/tech/backend/types.d.ts +0 -31
  307. package/tech/backend/types.d.ts.map +0 -1
  308. package/tech/build/babel.d.ts +0 -13
  309. package/tech/build/babel.d.ts.map +0 -1
  310. package/tech/build/detect-all.d.ts +0 -13
  311. package/tech/build/detect-all.d.ts.map +0 -1
  312. package/tech/build/esbuild.d.ts +0 -11
  313. package/tech/build/esbuild.d.ts.map +0 -1
  314. package/tech/build/index.cjs.js.map +0 -1
  315. package/tech/build/index.esm.js.map +0 -1
  316. package/tech/build/parcel.d.ts +0 -13
  317. package/tech/build/parcel.d.ts.map +0 -1
  318. package/tech/build/rollup.d.ts +0 -13
  319. package/tech/build/rollup.d.ts.map +0 -1
  320. package/tech/build/swc.d.ts +0 -13
  321. package/tech/build/swc.d.ts.map +0 -1
  322. package/tech/build/types.d.ts +0 -31
  323. package/tech/build/types.d.ts.map +0 -1
  324. package/tech/build/vite.d.ts +0 -13
  325. package/tech/build/vite.d.ts.map +0 -1
  326. package/tech/build/webpack.d.ts +0 -13
  327. package/tech/build/webpack.d.ts.map +0 -1
  328. package/tech/frontend/angular.d.ts +0 -11
  329. package/tech/frontend/angular.d.ts.map +0 -1
  330. package/tech/frontend/astro.d.ts +0 -11
  331. package/tech/frontend/astro.d.ts.map +0 -1
  332. package/tech/frontend/detect-all.d.ts +0 -13
  333. package/tech/frontend/detect-all.d.ts.map +0 -1
  334. package/tech/frontend/gatsby.d.ts +0 -11
  335. package/tech/frontend/gatsby.d.ts.map +0 -1
  336. package/tech/frontend/index.cjs.js.map +0 -1
  337. package/tech/frontend/index.esm.js.map +0 -1
  338. package/tech/frontend/nextjs.d.ts +0 -11
  339. package/tech/frontend/nextjs.d.ts.map +0 -1
  340. package/tech/frontend/nuxt.d.ts +0 -11
  341. package/tech/frontend/nuxt.d.ts.map +0 -1
  342. package/tech/frontend/qwik.d.ts +0 -11
  343. package/tech/frontend/qwik.d.ts.map +0 -1
  344. package/tech/frontend/react.d.ts +0 -11
  345. package/tech/frontend/react.d.ts.map +0 -1
  346. package/tech/frontend/remix.d.ts +0 -11
  347. package/tech/frontend/remix.d.ts.map +0 -1
  348. package/tech/frontend/solid.d.ts +0 -11
  349. package/tech/frontend/solid.d.ts.map +0 -1
  350. package/tech/frontend/svelte.d.ts +0 -11
  351. package/tech/frontend/svelte.d.ts.map +0 -1
  352. package/tech/frontend/sveltekit.d.ts +0 -11
  353. package/tech/frontend/sveltekit.d.ts.map +0 -1
  354. package/tech/frontend/types.d.ts +0 -35
  355. package/tech/frontend/types.d.ts.map +0 -1
  356. package/tech/frontend/vue.d.ts +0 -11
  357. package/tech/frontend/vue.d.ts.map +0 -1
  358. package/tech/index.cjs.js.map +0 -1
  359. package/tech/index.esm.js.map +0 -1
  360. package/tech/legacy/angularjs.d.ts +0 -12
  361. package/tech/legacy/angularjs.d.ts.map +0 -1
  362. package/tech/legacy/backbone.d.ts +0 -11
  363. package/tech/legacy/backbone.d.ts.map +0 -1
  364. package/tech/legacy/detect-all.d.ts +0 -13
  365. package/tech/legacy/detect-all.d.ts.map +0 -1
  366. package/tech/legacy/ember.d.ts +0 -11
  367. package/tech/legacy/ember.d.ts.map +0 -1
  368. package/tech/legacy/index.cjs.js.map +0 -1
  369. package/tech/legacy/index.esm.js.map +0 -1
  370. package/tech/legacy/jquery.d.ts +0 -11
  371. package/tech/legacy/jquery.d.ts.map +0 -1
  372. package/tech/legacy/types.d.ts +0 -33
  373. package/tech/legacy/types.d.ts.map +0 -1
  374. package/tech/linting/biome.d.ts +0 -11
  375. package/tech/linting/biome.d.ts.map +0 -1
  376. package/tech/linting/detect-all.d.ts +0 -13
  377. package/tech/linting/detect-all.d.ts.map +0 -1
  378. package/tech/linting/eslint.d.ts +0 -13
  379. package/tech/linting/eslint.d.ts.map +0 -1
  380. package/tech/linting/index.cjs.js.map +0 -1
  381. package/tech/linting/index.esm.js.map +0 -1
  382. package/tech/linting/prettier.d.ts +0 -13
  383. package/tech/linting/prettier.d.ts.map +0 -1
  384. package/tech/linting/stylelint.d.ts +0 -13
  385. package/tech/linting/stylelint.d.ts.map +0 -1
  386. package/tech/linting/types.d.ts +0 -31
  387. package/tech/linting/types.d.ts.map +0 -1
  388. package/tech/monorepo/detect-all.d.ts +0 -13
  389. package/tech/monorepo/detect-all.d.ts.map +0 -1
  390. package/tech/monorepo/index.cjs.js.map +0 -1
  391. package/tech/monorepo/index.esm.js.map +0 -1
  392. package/tech/monorepo/lerna.d.ts +0 -11
  393. package/tech/monorepo/lerna.d.ts.map +0 -1
  394. package/tech/monorepo/npm-workspaces.d.ts +0 -11
  395. package/tech/monorepo/npm-workspaces.d.ts.map +0 -1
  396. package/tech/monorepo/nx.d.ts +0 -11
  397. package/tech/monorepo/nx.d.ts.map +0 -1
  398. package/tech/monorepo/pnpm-workspaces.d.ts +0 -9
  399. package/tech/monorepo/pnpm-workspaces.d.ts.map +0 -1
  400. package/tech/monorepo/rush.d.ts +0 -11
  401. package/tech/monorepo/rush.d.ts.map +0 -1
  402. package/tech/monorepo/turborepo.d.ts +0 -11
  403. package/tech/monorepo/turborepo.d.ts.map +0 -1
  404. package/tech/monorepo/types.d.ts +0 -39
  405. package/tech/monorepo/types.d.ts.map +0 -1
  406. package/tech/monorepo/yarn-workspaces.d.ts +0 -11
  407. package/tech/monorepo/yarn-workspaces.d.ts.map +0 -1
  408. package/tech/shared-utils/detector-helpers.d.ts +0 -52
  409. package/tech/shared-utils/detector-helpers.d.ts.map +0 -1
  410. package/tech/shared-utils/types.d.ts +0 -41
  411. package/tech/shared-utils/types.d.ts.map +0 -1
  412. package/tech/testing/cypress.d.ts +0 -13
  413. package/tech/testing/cypress.d.ts.map +0 -1
  414. package/tech/testing/detect-all.d.ts +0 -13
  415. package/tech/testing/detect-all.d.ts.map +0 -1
  416. package/tech/testing/index.cjs.js.map +0 -1
  417. package/tech/testing/index.esm.js.map +0 -1
  418. package/tech/testing/jest.d.ts +0 -13
  419. package/tech/testing/jest.d.ts.map +0 -1
  420. package/tech/testing/mocha.d.ts +0 -13
  421. package/tech/testing/mocha.d.ts.map +0 -1
  422. package/tech/testing/playwright.d.ts +0 -13
  423. package/tech/testing/playwright.d.ts.map +0 -1
  424. package/tech/testing/types.d.ts +0 -35
  425. package/tech/testing/types.d.ts.map +0 -1
  426. package/tech/testing/vitest.d.ts +0 -13
  427. package/tech/testing/vitest.d.ts.map +0 -1
  428. package/tech/types/detectors.d.ts +0 -67
  429. package/tech/types/detectors.d.ts.map +0 -1
  430. package/tech/types/index.cjs.js.map +0 -1
  431. package/tech/types/index.esm.js.map +0 -1
  432. package/vfs/commit.d.ts +0 -32
  433. package/vfs/commit.d.ts.map +0 -1
  434. package/vfs/diff.d.ts +0 -73
  435. package/vfs/diff.d.ts.map +0 -1
  436. package/vfs/factory.d.ts +0 -37
  437. package/vfs/factory.d.ts.map +0 -1
  438. package/vfs/fs-tree.d.ts +0 -13
  439. package/vfs/fs-tree.d.ts.map +0 -1
  440. package/vfs/index.cjs.js.map +0 -1
  441. package/vfs/index.esm.js.map +0 -1
  442. package/vfs/types.d.ts +0 -179
  443. package/vfs/types.d.ts.map +0 -1
@@ -1,393 +1,17 @@
1
1
  import { join as join$1 } from 'node:path';
2
+ import { min } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/math/index.esm.js';
2
3
  import { existsSync, readFileSync } from 'node:fs';
3
-
4
- /**
5
- * Safe copies of Math built-in methods.
6
- *
7
- * These references are captured at module initialization time to protect against
8
- * prototype pollution attacks. Import only what you need for tree-shaking.
9
- *
10
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/math
11
- */
12
- const _Math = globalThis.Math;
13
- /**
14
- * (Safe copy) Returns the smaller of zero or more numbers.
15
- */
16
- const min = _Math.min;
17
-
18
- /**
19
- * Safe copies of Array built-in static methods.
20
- *
21
- * These references are captured at module initialization time to protect against
22
- * prototype pollution attacks. Import only what you need for tree-shaking.
23
- *
24
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/array
25
- */
26
- const _Array = globalThis.Array;
27
- /**
28
- * (Safe copy) Determines whether the passed value is an Array.
29
- */
30
- const isArray = _Array.isArray;
31
-
32
- /**
33
- * Safe copies of Error built-ins via factory functions.
34
- *
35
- * Since constructors cannot be safely captured via Object.assign, this module
36
- * provides factory functions that use Reflect.construct internally.
37
- *
38
- * These references are captured at module initialization time to protect against
39
- * prototype pollution attacks. Import only what you need for tree-shaking.
40
- *
41
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/error
42
- */
43
- const _Error = globalThis.Error;
44
- const _Reflect$1 = globalThis.Reflect;
45
- /**
46
- * (Safe copy) Creates a new Error using the captured Error constructor.
47
- * Use this instead of `new Error()`.
48
- *
49
- * @param message - Optional error message.
50
- * @param options - Optional error options.
51
- * @returns A new Error instance.
52
- */
53
- const createError = (message, options) => _Reflect$1.construct(_Error, [message, options]);
54
-
55
- /**
56
- * Safe copies of JSON built-in methods.
57
- *
58
- * These references are captured at module initialization time to protect against
59
- * prototype pollution attacks. Import only what you need for tree-shaking.
60
- *
61
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/json
62
- */
63
- const _JSON = globalThis.JSON;
64
- /**
65
- * (Safe copy) Converts a JavaScript Object Notation (JSON) string into an object.
66
- */
67
- const parse = _JSON.parse;
68
- /**
69
- * (Safe copy) Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
70
- */
71
- const stringify = _JSON.stringify;
72
-
73
- /**
74
- * Safe copies of Object built-in methods.
75
- *
76
- * These references are captured at module initialization time to protect against
77
- * prototype pollution attacks. Import only what you need for tree-shaking.
78
- *
79
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/object
80
- */
81
- const _Object = globalThis.Object;
82
- /**
83
- * (Safe copy) Prevents modification of existing property attributes and values,
84
- * and prevents the addition of new properties.
85
- */
86
- const freeze = _Object.freeze;
87
- /**
88
- * (Safe copy) Returns the names of the enumerable string properties and methods of an object.
89
- */
90
- const keys = _Object.keys;
91
- /**
92
- * (Safe copy) Returns an array of key/values of the enumerable own properties of an object.
93
- */
94
- const entries = _Object.entries;
95
- /**
96
- * (Safe copy) Returns an array of values of the enumerable own properties of an object.
97
- */
98
- const values = _Object.values;
99
-
100
- /**
101
- * Safe copies of Console built-in methods.
102
- *
103
- * These references are captured at module initialization time to protect against
104
- * prototype pollution attacks. Import only what you need for tree-shaking.
105
- *
106
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/console
107
- */
108
- const _console = globalThis.console;
109
- /**
110
- * (Safe copy) Outputs a message to the console.
111
- */
112
- const log = _console.log.bind(_console);
113
- /**
114
- * (Safe copy) Outputs a warning message to the console.
115
- */
116
- const warn = _console.warn.bind(_console);
117
- /**
118
- * (Safe copy) Outputs an error message to the console.
119
- */
120
- const error = _console.error.bind(_console);
121
- /**
122
- * (Safe copy) Outputs an informational message to the console.
123
- */
124
- const info = _console.info.bind(_console);
125
- /**
126
- * (Safe copy) Outputs a debug message to the console.
127
- */
128
- const debug = _console.debug.bind(_console);
129
- /**
130
- * (Safe copy) Outputs a stack trace to the console.
131
- */
132
- _console.trace.bind(_console);
133
- /**
134
- * (Safe copy) Displays an interactive listing of the properties of a specified object.
135
- */
136
- _console.dir.bind(_console);
137
- /**
138
- * (Safe copy) Displays tabular data as a table.
139
- */
140
- _console.table.bind(_console);
141
- /**
142
- * (Safe copy) Writes an error message to the console if the assertion is false.
143
- */
144
- _console.assert.bind(_console);
145
- /**
146
- * (Safe copy) Clears the console.
147
- */
148
- _console.clear.bind(_console);
149
- /**
150
- * (Safe copy) Logs the number of times that this particular call to count() has been called.
151
- */
152
- _console.count.bind(_console);
153
- /**
154
- * (Safe copy) Resets the counter used with console.count().
155
- */
156
- _console.countReset.bind(_console);
157
- /**
158
- * (Safe copy) Creates a new inline group in the console.
159
- */
160
- _console.group.bind(_console);
161
- /**
162
- * (Safe copy) Creates a new inline group in the console that is initially collapsed.
163
- */
164
- _console.groupCollapsed.bind(_console);
165
- /**
166
- * (Safe copy) Exits the current inline group.
167
- */
168
- _console.groupEnd.bind(_console);
169
- /**
170
- * (Safe copy) Starts a timer with a name specified as an input parameter.
171
- */
172
- _console.time.bind(_console);
173
- /**
174
- * (Safe copy) Stops a timer that was previously started.
175
- */
176
- _console.timeEnd.bind(_console);
177
- /**
178
- * (Safe copy) Logs the current value of a timer that was previously started.
179
- */
180
- _console.timeLog.bind(_console);
181
-
182
- /**
183
- * Safe copies of Set built-in via factory function.
184
- *
185
- * Since constructors cannot be safely captured via Object.assign, this module
186
- * provides a factory function that uses Reflect.construct internally.
187
- *
188
- * These references are captured at module initialization time to protect against
189
- * prototype pollution attacks. Import only what you need for tree-shaking.
190
- *
191
- * @module @hyperfrontend/immutable-api-utils/built-in-copy/set
192
- */
193
- const _Set = globalThis.Set;
194
- const _Reflect = globalThis.Reflect;
195
- /**
196
- * (Safe copy) Creates a new Set using the captured Set constructor.
197
- * Use this instead of `new Set()`.
198
- *
199
- * @param iterable - Optional iterable of values.
200
- * @returns A new Set instance.
201
- */
202
- const createSet = (iterable) => _Reflect.construct(_Set, iterable ? [iterable] : []);
203
-
204
- const registeredClasses = [];
205
-
206
- /**
207
- * Returns the data type of the target.
208
- * Uses native `typeof` operator, however, makes distinction between `null`, `array`, and `object`.
209
- * Also, when classes are registered via `registerClass`, it checks if objects are instance of any known registered class.
210
- *
211
- * @param target - The target to get the data type of.
212
- * @returns The data type of the target.
213
- */
214
- const getType = (target) => {
215
- if (target === null)
216
- return 'null';
217
- const nativeDataType = typeof target;
218
- if (nativeDataType === 'object') {
219
- if (isArray(target))
220
- return 'array';
221
- for (const registeredClass of registeredClasses) {
222
- if (target instanceof registeredClass)
223
- return registeredClass.name;
224
- }
225
- }
226
- return nativeDataType;
227
- };
228
-
229
- /* eslint-disable @typescript-eslint/no-explicit-any */
230
- /**
231
- * Creates a wrapper function that only executes the wrapped function if the condition function returns true.
232
- *
233
- * @param func - The function to be conditionally executed.
234
- * @param conditionFunc - A function that returns a boolean, determining if `func` should be executed.
235
- * @returns A wrapped version of `func` that executes conditionally.
236
- */
237
- function createConditionalExecutionFunction(func, conditionFunc) {
238
- return function (...args) {
239
- if (conditionFunc()) {
240
- return func(...args);
241
- }
242
- };
243
- }
244
-
245
- /* eslint-disable @typescript-eslint/no-explicit-any */
246
- /**
247
- * Creates a wrapper function that silently ignores any errors thrown by the wrapped void function.
248
- * This function is specifically for wrapping functions that do not return a value (void functions).
249
- * Exceptions are swallowed without any logging or handling.
250
- *
251
- * @param func - The void function to be wrapped.
252
- * @returns A wrapped version of the input function that ignores errors.
253
- */
254
- function createErrorIgnoringFunction(func) {
255
- return function (...args) {
256
- try {
257
- func(...args);
258
- }
259
- catch {
260
- // Deliberately swallowing/ignoring the exception
261
- }
262
- };
263
- }
264
-
265
- /* eslint-disable @typescript-eslint/no-unused-vars */
266
- /**
267
- * A no-operation function (noop) that does nothing regardless of the arguments passed.
268
- * It is designed to be as permissive as possible in its typing without using the `Function` keyword.
269
- *
270
- * @param args - Any arguments passed to the function (ignored)
271
- */
272
- const noop = (...args) => {
273
- // Intentionally does nothing
274
- };
275
-
276
- const logLevels = ['none', 'error', 'warn', 'log', 'info', 'debug'];
277
- const priority = {
278
- error: 4,
279
- warn: 3,
280
- log: 2,
281
- info: 1,
282
- debug: 0,
283
- };
284
- /**
285
- * Validates whether a given string is a valid log level.
286
- *
287
- * @param level - The log level to validate
288
- * @returns True if the level is valid, false otherwise
289
- */
290
- function isValidLogLevel(level) {
291
- return logLevels.includes(level);
292
- }
293
- /**
294
- * Creates a log level configuration manager for controlling logging behavior.
295
- * Provides methods to get, set, and evaluate log levels based on priority.
296
- *
297
- * @param level - The initial log level (defaults to 'error')
298
- * @returns A configuration object with log level management methods
299
- * @throws {Error} When the provided level is not a valid log level
300
- */
301
- function createLogLevelConfig(level = 'error') {
302
- if (!isValidLogLevel(level)) {
303
- throw createError('Cannot create log level configuration with a valid default log level');
304
- }
305
- const state = { level };
306
- const getLogLevel = () => state.level;
307
- const setLogLevel = (level) => {
308
- if (!isValidLogLevel(level)) {
309
- throw createError(`Cannot set value '${level}' level. Expected levels are ${logLevels}.`);
310
- }
311
- state.level = level;
312
- };
313
- const shouldLog = (level) => {
314
- if (state.level === 'none' || level === 'none' || !isValidLogLevel(level)) {
315
- return false;
316
- }
317
- return priority[level] >= priority[state.level];
318
- };
319
- return freeze({
320
- getLogLevel,
321
- setLogLevel,
322
- shouldLog,
323
- });
324
- }
325
-
326
- /**
327
- * Creates a logger instance with configurable log level filtering.
328
- * Each log function is wrapped to respect the current log level setting.
329
- *
330
- * @param error - Function to handle error-level logs (required)
331
- * @param warn - Function to handle warning-level logs (optional, defaults to noop)
332
- * @param log - Function to handle standard logs (optional, defaults to noop)
333
- * @param info - Function to handle info-level logs (optional, defaults to noop)
334
- * @param debug - Function to handle debug-level logs (optional, defaults to noop)
335
- * @returns A frozen logger object with log methods and level control
336
- * @throws {ErrorLevelFn} When any provided log function is invalid
337
- */
338
- function createLogger(error, warn = noop, log = noop, info = noop, debug = noop) {
339
- if (notValidLogFn(error)) {
340
- throw createError(notFnMsg('error'));
341
- }
342
- if (notValidLogFn(warn)) {
343
- throw createError(notFnMsg('warn'));
344
- }
345
- if (notValidLogFn(log)) {
346
- throw createError(notFnMsg('log'));
347
- }
348
- if (notValidLogFn(info)) {
349
- throw createError(notFnMsg('info'));
350
- }
351
- if (notValidLogFn(debug)) {
352
- throw createError(notFnMsg('debug'));
353
- }
354
- const { setLogLevel, getLogLevel, shouldLog } = createLogLevelConfig();
355
- const wrapLogFn = (fn, level) => {
356
- if (fn === noop)
357
- return fn;
358
- const condition = () => shouldLog(level);
359
- return createConditionalExecutionFunction(createErrorIgnoringFunction(fn), condition);
360
- };
361
- return freeze({
362
- error: wrapLogFn(error, 'error'),
363
- warn: wrapLogFn(warn, 'warn'),
364
- log: wrapLogFn(log, 'log'),
365
- info: wrapLogFn(info, 'info'),
366
- debug: wrapLogFn(debug, 'debug'),
367
- setLogLevel,
368
- getLogLevel,
369
- });
370
- }
371
- /**
372
- * Validates whether a given value is a valid log function.
373
- *
374
- * @param fn - The value to validate
375
- * @returns True if the value is not a function (invalid), false if it is valid
376
- */
377
- function notValidLogFn(fn) {
378
- return getType(fn) !== 'function' && fn !== noop;
379
- }
380
- /**
381
- * Generates an error message for invalid log function parameters.
382
- *
383
- * @param label - The name of the log function that failed validation
384
- * @returns A formatted error message string
385
- */
386
- function notFnMsg(label) {
387
- return `Cannot create a logger when ${label} is not a function`;
388
- }
389
-
390
- createLogger(error, warn, log, info, debug);
4
+ import { isArray } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/array/index.esm.js';
5
+ import { error, warn, log, info, debug } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/console/index.esm.js';
6
+ import { stringify, parse } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/json/index.esm.js';
7
+ import { freeze, entries, keys, values } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/object/index.esm.js';
8
+ import { createSet } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/set/index.esm.js';
9
+ import { createLogger } from '../../_dependencies/@hyperfrontend/logging/index.esm.js';
10
+ import { createError } from '../../_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/error/index.esm.js';
11
+ import { isSafePath } from '../../_shared/core/fs/guard/index.esm.js';
12
+ import { exists } from '../../_shared/core/fs/stat/index.esm.js';
13
+ import { join } from '../../_shared/core/path/join/index.esm.js';
14
+ import { collectAllDependencies, parseVersionString, locateConfigFile } from '../../_shared/tech/shared-utils/detector-helpers/index.esm.js';
391
15
 
392
16
  /**
393
17
  * Global log level registry.
@@ -427,6 +51,13 @@ function isSensitiveKey(key) {
427
51
  *
428
52
  * @param obj - Object to sanitize
429
53
  * @returns New object with sensitive values redacted
54
+ *
55
+ * @example Sanitizing sensitive data
56
+ * ```typescript
57
+ * const config = { apiKey: 'secret123', endpoint: 'https://api.example.com' }
58
+ * const safe = sanitize(config)
59
+ * // => { apiKey: '[REDACTED]', endpoint: 'https://api.example.com' }
60
+ * ```
430
61
  */
431
62
  function sanitize(obj) {
432
63
  if (obj === null || obj === undefined) {
@@ -477,7 +108,7 @@ function formatMessage(namespace, message, meta) {
477
108
  * @param options - Logger configuration options
478
109
  * @returns A configured scoped logger instance
479
110
  *
480
- * @example
111
+ * @example Creating a scoped logger
481
112
  * ```typescript
482
113
  * const logger = createScopedLogger('project-scope')
483
114
  * logger.setLogLevel('debug')
@@ -514,7 +145,7 @@ function createScopedLogger(namespace, options = {}) {
514
145
  * Default logger instance for the project-scope library.
515
146
  * Use this for general logging within the library.
516
147
  *
517
- * @example
148
+ * @example Using the default logger
518
149
  * ```typescript
519
150
  * import { logger } from '@hyperfrontend/project-scope/core'
520
151
  *
@@ -531,9 +162,17 @@ createScopedLogger('project-scope:fs');
531
162
  * @param filePath - Path to file
532
163
  * @param encoding - File encoding (default: utf-8)
533
164
  * @returns File contents or null if file doesn't exist
165
+ *
166
+ * @example Reading file if it exists
167
+ * ```typescript
168
+ * const content = readFileIfExists('./optional-config.json')
169
+ * if (content) {
170
+ * // File existed, use content
171
+ * }
172
+ * ```
534
173
  */
535
174
  function readFileIfExists(filePath, encoding = 'utf-8') {
536
- if (!existsSync(filePath)) {
175
+ if (!isSafePath(filePath) || !existsSync(filePath)) {
537
176
  return null;
538
177
  }
539
178
  try {
@@ -544,33 +183,12 @@ function readFileIfExists(filePath, encoding = 'utf-8') {
544
183
  }
545
184
  }
546
185
 
547
- createScopedLogger('project-scope:fs:write');
548
-
549
- /**
550
- * Check if path exists.
551
- *
552
- * @param filePath - Path to check
553
- * @returns True if path exists
554
- */
555
- function exists(filePath) {
556
- return existsSync(filePath);
557
- }
558
-
559
186
  createScopedLogger('project-scope:fs:dir');
560
187
 
561
- /**
562
- * Join path segments.
563
- * Uses platform-specific separators (e.g., / or \).
564
- *
565
- * @param paths - Path segments to join
566
- * @returns Joined path
567
- */
568
- function join(...paths) {
569
- return join$1(...paths);
570
- }
571
-
572
188
  createScopedLogger('project-scope:fs:traversal');
573
189
 
190
+ createScopedLogger('project-scope:fs:write');
191
+
574
192
  const packageLogger = createScopedLogger('project-scope:project:package');
575
193
  /**
576
194
  * Verifies that a value is an object with only string values,
@@ -640,6 +258,16 @@ function validatePackageJson(data) {
640
258
  *
641
259
  * @param projectPath - Project directory path or path to package.json
642
260
  * @returns Parsed package.json or null if not found
261
+ *
262
+ * @example Reading package.json if it exists
263
+ * ```typescript
264
+ * import { readPackageJsonIfExists } from '@hyperfrontend/project-scope'
265
+ *
266
+ * const pkg = readPackageJsonIfExists('/path/to/project')
267
+ * if (pkg) {
268
+ * console.log('Found:', pkg.name)
269
+ * }
270
+ * ```
643
271
  */
644
272
  function readPackageJsonIfExists(projectPath) {
645
273
  const packageJsonPath = projectPath.endsWith('package.json') ? projectPath : join$1(projectPath, 'package.json');
@@ -659,109 +287,58 @@ function readPackageJsonIfExists(projectPath) {
659
287
  }
660
288
  }
661
289
 
290
+ /** Config patterns for Cypress */
291
+ const CYPRESS_CONFIG_PATTERNS = ['cypress.config.js', 'cypress.config.ts', 'cypress.config.mjs', 'cypress.json'];
662
292
  /**
663
- * Get combined dependencies from package.json.
664
- * Merges dependencies, devDependencies, peerDependencies, and optionalDependencies.
665
- *
666
- * @param packageJson - The package.json object to extract dependencies from
667
- * @returns Combined dependencies as a single record
668
- */
669
- function collectAllDependencies(packageJson) {
670
- return {
671
- ...packageJson?.dependencies,
672
- ...packageJson?.devDependencies,
673
- ...packageJson?.peerDependencies,
674
- ...packageJson?.optionalDependencies,
675
- };
676
- }
677
- /**
678
- * Extract clean version from dependency version string.
679
- * Removes semver prefixes like ^, ~, >=, etc.
680
- * Uses character-by-character parsing to avoid ReDoS vulnerabilities.
681
- *
682
- * @param versionString - The version string with optional prefix characters
683
- * @returns The cleaned version string without prefix characters
684
- */
685
- function parseVersionString(versionString) {
686
- if (versionString === undefined || versionString === null)
687
- return undefined;
688
- let start = 0;
689
- while (start < versionString.length) {
690
- const char = versionString[start];
691
- if (char !== '^' && char !== '~' && char !== '>' && char !== '=' && char !== '<') {
692
- break;
693
- }
694
- start++;
695
- }
696
- return versionString.slice(start);
697
- }
698
- /**
699
- * Find first matching config file in project.
700
- * Note: Name avoids similarity to fs.readFile/fs.readFileSync.
701
- *
702
- * @param projectPath - The project directory path
703
- * @param patterns - Array of config file patterns to search for
704
- * @returns The first matching config file path or undefined
705
- */
706
- function locateConfigFile(projectPath, patterns) {
707
- for (const pattern of patterns) {
708
- const fullPath = join(projectPath, pattern);
709
- if (exists(fullPath)) {
710
- return pattern;
711
- }
712
- }
713
- return undefined;
714
- }
715
-
716
- /** Config patterns for Jest */
717
- const JEST_CONFIG_PATTERNS = ['jest.config.js', 'jest.config.ts', 'jest.config.mjs', 'jest.config.cjs', 'jest.config.json'];
718
- /**
719
- * Detect Jest in project.
293
+ * Detect Cypress in project.
720
294
  *
721
295
  * @param projectPath - Project directory path
722
296
  * @param packageJson - Optional pre-loaded package.json
723
297
  * @returns Detection result or null if not detected
298
+ *
299
+ * @example Detecting Cypress testing framework
300
+ * ```typescript
301
+ * import { cypressDetector } from '@hyperfrontend/project-scope'
302
+ *
303
+ * const result = cypressDetector('./my-project')
304
+ * if (result) {
305
+ * console.log(`Cypress ${result.version} detected (${result.confidence}% confidence)`)
306
+ * // => "Cypress 13.6.0 detected (95% confidence)"
307
+ * }
308
+ * ```
724
309
  */
725
- function jestDetector(projectPath, packageJson) {
310
+ function cypressDetector(projectPath, packageJson) {
726
311
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
727
312
  const sources = [];
728
313
  let confidence = 0;
729
314
  let version;
730
315
  const deps = collectAllDependencies(pkg);
731
- if (deps['jest']) {
316
+ if (deps['cypress']) {
732
317
  confidence += 60;
733
- version = parseVersionString(deps['jest']);
734
- sources.push({ type: 'package.json', field: 'dependencies.jest' });
318
+ version = parseVersionString(deps['cypress']);
319
+ sources.push({ type: 'package.json', field: 'dependencies.cypress' });
735
320
  }
736
- const configPath = locateConfigFile(projectPath, JEST_CONFIG_PATTERNS);
321
+ const configPath = locateConfigFile(projectPath, CYPRESS_CONFIG_PATTERNS);
737
322
  if (configPath) {
738
323
  confidence += 30;
739
324
  sources.push({ type: 'config-file', path: configPath });
740
325
  }
741
- if (pkg && 'jest' in pkg) {
742
- confidence += 20;
743
- sources.push({ type: 'package.json', field: 'jest' });
744
- }
745
- const testScript = pkg?.scripts?.['test'] ?? '';
746
- if (testScript.includes('jest')) {
326
+ if (exists(join$1(projectPath, 'cypress'))) {
747
327
  confidence += 10;
748
- sources.push({ type: 'package.json', field: 'scripts.test' });
749
- }
750
- if (deps['@types/jest']) {
751
- confidence += 5;
752
- sources.push({ type: 'package.json', field: 'dependencies.@types/jest' });
328
+ sources.push({ type: 'directory', path: 'cypress/' });
753
329
  }
754
- if (deps['ts-jest']) {
330
+ const e2eScript = pkg?.scripts?.['e2e'] ?? pkg?.scripts?.['test:e2e'] ?? '';
331
+ if (e2eScript.includes('cypress')) {
755
332
  confidence += 5;
756
- sources.push({ type: 'package.json', field: 'dependencies.ts-jest' });
333
+ sources.push({ type: 'package.json', field: 'scripts.e2e or scripts.test:e2e' });
757
334
  }
758
335
  if (confidence === 0) {
759
336
  return null;
760
337
  }
761
338
  return {
762
- id: 'jest',
763
- name: 'Jest',
764
- type: 'unit',
339
+ id: 'cypress',
340
+ name: 'Cypress',
341
+ type: 'e2e',
765
342
  version,
766
343
  configPath,
767
344
  confidence: min(confidence, 100),
@@ -769,51 +346,66 @@ function jestDetector(projectPath, packageJson) {
769
346
  };
770
347
  }
771
348
 
772
- /** Config patterns for Vitest */
773
- const VITEST_CONFIG_PATTERNS = ['vitest.config.js', 'vitest.config.ts', 'vitest.config.mjs'];
349
+ /** Config patterns for Jest */
350
+ const JEST_CONFIG_PATTERNS = ['jest.config.js', 'jest.config.ts', 'jest.config.mjs', 'jest.config.cjs', 'jest.config.json'];
774
351
  /**
775
- * Detect Vitest in project.
352
+ * Detect Jest in project.
776
353
  *
777
354
  * @param projectPath - Project directory path
778
355
  * @param packageJson - Optional pre-loaded package.json
779
356
  * @returns Detection result or null if not detected
357
+ *
358
+ * @example Detecting Jest testing framework
359
+ * ```typescript
360
+ * import { jestDetector } from '@hyperfrontend/project-scope'
361
+ *
362
+ * const result = jestDetector('./my-project')
363
+ * if (result) {
364
+ * console.log(`Jest ${result.version} detected`)
365
+ * console.log('Sources:', result.detectedFrom.map(s => s.type))
366
+ * // => "Sources: ['package.json', 'config-file']"
367
+ * }
368
+ * ```
780
369
  */
781
- function vitestDetector(projectPath, packageJson) {
370
+ function jestDetector(projectPath, packageJson) {
782
371
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
783
372
  const sources = [];
784
373
  let confidence = 0;
785
374
  let version;
786
375
  const deps = collectAllDependencies(pkg);
787
- if (deps['vitest']) {
788
- confidence += 70;
789
- version = parseVersionString(deps['vitest']);
790
- sources.push({ type: 'package.json', field: 'dependencies.vitest' });
376
+ if (deps['jest']) {
377
+ confidence += 60;
378
+ version = parseVersionString(deps['jest']);
379
+ sources.push({ type: 'package.json', field: 'dependencies.jest' });
791
380
  }
792
- const configPath = locateConfigFile(projectPath, VITEST_CONFIG_PATTERNS);
381
+ const configPath = locateConfigFile(projectPath, JEST_CONFIG_PATTERNS);
793
382
  if (configPath) {
794
- confidence += 25;
383
+ confidence += 30;
795
384
  sources.push({ type: 'config-file', path: configPath });
796
385
  }
797
- if (!configPath) {
798
- const viteConfig = exists(join$1(projectPath, 'vite.config.ts')) ||
799
- exists(join$1(projectPath, 'vite.config.js')) ||
800
- exists(join$1(projectPath, 'vite.config.mjs'));
801
- if (viteConfig && deps['vitest']) {
802
- confidence += 5;
803
- sources.push({ type: 'config-file', path: 'vite.config.*' });
804
- }
386
+ if (pkg && 'jest' in pkg) {
387
+ confidence += 20;
388
+ sources.push({ type: 'package.json', field: 'jest' });
805
389
  }
806
390
  const testScript = pkg?.scripts?.['test'] ?? '';
807
- if (testScript.includes('vitest')) {
391
+ if (testScript.includes('jest')) {
808
392
  confidence += 10;
809
393
  sources.push({ type: 'package.json', field: 'scripts.test' });
810
394
  }
395
+ if (deps['@types/jest']) {
396
+ confidence += 5;
397
+ sources.push({ type: 'package.json', field: 'dependencies.@types/jest' });
398
+ }
399
+ if (deps['ts-jest']) {
400
+ confidence += 5;
401
+ sources.push({ type: 'package.json', field: 'dependencies.ts-jest' });
402
+ }
811
403
  if (confidence === 0) {
812
404
  return null;
813
405
  }
814
406
  return {
815
- id: 'vitest',
816
- name: 'Vitest',
407
+ id: 'jest',
408
+ name: 'Jest',
817
409
  type: 'unit',
818
410
  version,
819
411
  configPath,
@@ -830,6 +422,17 @@ const MOCHA_CONFIG_PATTERNS = ['.mocharc.js', '.mocharc.json', '.mocharc.yaml',
830
422
  * @param projectPath - Project directory path
831
423
  * @param packageJson - Optional pre-loaded package.json
832
424
  * @returns Detection result or null if not detected
425
+ *
426
+ * @example Detecting Mocha testing framework
427
+ * ```typescript
428
+ * import { mochaDetector } from '@hyperfrontend/project-scope'
429
+ *
430
+ * const result = mochaDetector('./my-project')
431
+ * if (result) {
432
+ * console.log(`Mocha ${result.version} detected (${result.confidence}%)`)
433
+ * // => "Mocha 10.2.0 detected (95%)"
434
+ * }
435
+ * ```
833
436
  */
834
437
  function mochaDetector(projectPath, packageJson) {
835
438
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
@@ -874,37 +477,53 @@ function mochaDetector(projectPath, packageJson) {
874
477
  };
875
478
  }
876
479
 
877
- /** Config patterns for Cypress */
878
- const CYPRESS_CONFIG_PATTERNS = ['cypress.config.js', 'cypress.config.ts', 'cypress.config.mjs', 'cypress.json'];
480
+ /** Config patterns for Playwright */
481
+ const PLAYWRIGHT_CONFIG_PATTERNS = ['playwright.config.js', 'playwright.config.ts', 'playwright.config.mjs'];
879
482
  /**
880
- * Detect Cypress in project.
483
+ * Detect Playwright in project.
881
484
  *
882
485
  * @param projectPath - Project directory path
883
486
  * @param packageJson - Optional pre-loaded package.json
884
487
  * @returns Detection result or null if not detected
488
+ *
489
+ * @example Detecting Playwright testing framework
490
+ * ```typescript
491
+ * import { playwrightDetector } from '@hyperfrontend/project-scope'
492
+ *
493
+ * const result = playwrightDetector('./my-project')
494
+ * if (result) {
495
+ * console.log(`Playwright ${result.version} (${result.type} tests)`)
496
+ * // => "Playwright 1.42.0 (e2e tests)"
497
+ * }
498
+ * ```
885
499
  */
886
- function cypressDetector(projectPath, packageJson) {
500
+ function playwrightDetector(projectPath, packageJson) {
887
501
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
888
502
  const sources = [];
889
503
  let confidence = 0;
890
504
  let version;
891
505
  const deps = collectAllDependencies(pkg);
892
- if (deps['cypress']) {
893
- confidence += 60;
894
- version = parseVersionString(deps['cypress']);
895
- sources.push({ type: 'package.json', field: 'dependencies.cypress' });
506
+ if (deps['@playwright/test']) {
507
+ confidence += 70;
508
+ version = parseVersionString(deps['@playwright/test']);
509
+ sources.push({ type: 'package.json', field: 'dependencies.@playwright/test' });
896
510
  }
897
- const configPath = locateConfigFile(projectPath, CYPRESS_CONFIG_PATTERNS);
511
+ if (deps['playwright']) {
512
+ confidence += 50;
513
+ version = version ?? parseVersionString(deps['playwright']);
514
+ sources.push({ type: 'package.json', field: 'dependencies.playwright' });
515
+ }
516
+ const configPath = locateConfigFile(projectPath, PLAYWRIGHT_CONFIG_PATTERNS);
898
517
  if (configPath) {
899
- confidence += 30;
518
+ confidence += 25;
900
519
  sources.push({ type: 'config-file', path: configPath });
901
520
  }
902
- if (exists(join$1(projectPath, 'cypress'))) {
903
- confidence += 10;
904
- sources.push({ type: 'directory', path: 'cypress/' });
521
+ if (exists(join$1(projectPath, 'e2e')) || exists(join$1(projectPath, 'tests'))) {
522
+ confidence += 5;
523
+ sources.push({ type: 'directory', path: 'e2e/ or tests/' });
905
524
  }
906
525
  const e2eScript = pkg?.scripts?.['e2e'] ?? pkg?.scripts?.['test:e2e'] ?? '';
907
- if (e2eScript.includes('cypress')) {
526
+ if (e2eScript.includes('playwright')) {
908
527
  confidence += 5;
909
528
  sources.push({ type: 'package.json', field: 'scripts.e2e or scripts.test:e2e' });
910
529
  }
@@ -912,8 +531,8 @@ function cypressDetector(projectPath, packageJson) {
912
531
  return null;
913
532
  }
914
533
  return {
915
- id: 'cypress',
916
- name: 'Cypress',
534
+ id: 'playwright',
535
+ name: 'Playwright',
917
536
  type: 'e2e',
918
537
  version,
919
538
  configPath,
@@ -922,52 +541,64 @@ function cypressDetector(projectPath, packageJson) {
922
541
  };
923
542
  }
924
543
 
925
- /** Config patterns for Playwright */
926
- const PLAYWRIGHT_CONFIG_PATTERNS = ['playwright.config.js', 'playwright.config.ts', 'playwright.config.mjs'];
544
+ /** Config patterns for Vitest */
545
+ const VITEST_CONFIG_PATTERNS = ['vitest.config.js', 'vitest.config.ts', 'vitest.config.mjs'];
927
546
  /**
928
- * Detect Playwright in project.
547
+ * Detect Vitest in project.
929
548
  *
930
549
  * @param projectPath - Project directory path
931
550
  * @param packageJson - Optional pre-loaded package.json
932
551
  * @returns Detection result or null if not detected
552
+ *
553
+ * @example Detecting Vitest testing framework
554
+ * ```typescript
555
+ * import { vitestDetector } from '@hyperfrontend/project-scope'
556
+ *
557
+ * const result = vitestDetector('./my-project')
558
+ * if (result) {
559
+ * console.log(`Vitest ${result.version} detected`)
560
+ * console.log('Config:', result.configPath)
561
+ * // => "Config: vitest.config.ts"
562
+ * }
563
+ * ```
933
564
  */
934
- function playwrightDetector(projectPath, packageJson) {
565
+ function vitestDetector(projectPath, packageJson) {
935
566
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
936
567
  const sources = [];
937
568
  let confidence = 0;
938
569
  let version;
939
570
  const deps = collectAllDependencies(pkg);
940
- if (deps['@playwright/test']) {
571
+ if (deps['vitest']) {
941
572
  confidence += 70;
942
- version = parseVersionString(deps['@playwright/test']);
943
- sources.push({ type: 'package.json', field: 'dependencies.@playwright/test' });
944
- }
945
- if (deps['playwright']) {
946
- confidence += 50;
947
- version = version ?? parseVersionString(deps['playwright']);
948
- sources.push({ type: 'package.json', field: 'dependencies.playwright' });
573
+ version = parseVersionString(deps['vitest']);
574
+ sources.push({ type: 'package.json', field: 'dependencies.vitest' });
949
575
  }
950
- const configPath = locateConfigFile(projectPath, PLAYWRIGHT_CONFIG_PATTERNS);
576
+ const configPath = locateConfigFile(projectPath, VITEST_CONFIG_PATTERNS);
951
577
  if (configPath) {
952
578
  confidence += 25;
953
579
  sources.push({ type: 'config-file', path: configPath });
954
580
  }
955
- if (exists(join$1(projectPath, 'e2e')) || exists(join$1(projectPath, 'tests'))) {
956
- confidence += 5;
957
- sources.push({ type: 'directory', path: 'e2e/ or tests/' });
581
+ if (!configPath) {
582
+ const viteConfig = exists(join$1(projectPath, 'vite.config.ts')) ||
583
+ exists(join$1(projectPath, 'vite.config.js')) ||
584
+ exists(join$1(projectPath, 'vite.config.mjs'));
585
+ if (viteConfig && deps['vitest']) {
586
+ confidence += 5;
587
+ sources.push({ type: 'config-file', path: 'vite.config.*' });
588
+ }
958
589
  }
959
- const e2eScript = pkg?.scripts?.['e2e'] ?? pkg?.scripts?.['test:e2e'] ?? '';
960
- if (e2eScript.includes('playwright')) {
961
- confidence += 5;
962
- sources.push({ type: 'package.json', field: 'scripts.e2e or scripts.test:e2e' });
590
+ const testScript = pkg?.scripts?.['test'] ?? '';
591
+ if (testScript.includes('vitest')) {
592
+ confidence += 10;
593
+ sources.push({ type: 'package.json', field: 'scripts.test' });
963
594
  }
964
595
  if (confidence === 0) {
965
596
  return null;
966
597
  }
967
598
  return {
968
- id: 'playwright',
969
- name: 'Playwright',
970
- type: 'e2e',
599
+ id: 'vitest',
600
+ name: 'Vitest',
601
+ type: 'unit',
971
602
  version,
972
603
  configPath,
973
604
  confidence: min(confidence, 100),
@@ -989,6 +620,21 @@ const testingDetectors = [
989
620
  * @param projectPath - Project directory path
990
621
  * @param packageJson - Optional pre-loaded package.json
991
622
  * @returns Array of detected testing frameworks, sorted by confidence
623
+ *
624
+ * @example Detecting multiple testing frameworks
625
+ * ```typescript
626
+ * import { detectTestingFrameworks } from '@hyperfrontend/project-scope'
627
+ *
628
+ * const frameworks = detectTestingFrameworks('./my-project')
629
+ * // => [
630
+ * // { id: 'jest', name: 'Jest', type: 'unit', confidence: 95, ... },
631
+ * // { id: 'cypress', name: 'Cypress', type: 'e2e', confidence: 85, ... }
632
+ * // ]
633
+ *
634
+ * // Results are sorted by confidence (highest first)
635
+ * const primary = frameworks[0]?.name ?? 'None'
636
+ * console.log(`Primary testing framework: ${primary}`)
637
+ * ```
992
638
  */
993
639
  function detectTestingFrameworks(projectPath, packageJson) {
994
640
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
@@ -1003,4 +649,3 @@ function detectTestingFrameworks(projectPath, packageJson) {
1003
649
  }
1004
650
 
1005
651
  export { CYPRESS_CONFIG_PATTERNS, JEST_CONFIG_PATTERNS, MOCHA_CONFIG_PATTERNS, PLAYWRIGHT_CONFIG_PATTERNS, VITEST_CONFIG_PATTERNS, cypressDetector, detectTestingFrameworks, jestDetector, mochaDetector, playwrightDetector, testingDetectors, vitestDetector };
1006
- //# sourceMappingURL=index.esm.js.map