@hyperfrontend/project-scope 0.2.1 → 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 +7 -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/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 +1702 -1910
  55. package/cli/index.d.ts +273 -7
  56. package/cli/index.d.ts.map +1 -1
  57. package/cli/index.esm.js +1586 -1794
  58. package/core/encoding/index.cjs.js +86 -401
  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 +78 -392
  62. package/core/fs/index.cjs.js +231 -581
  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 -571
  66. package/core/index.cjs.js +518 -1748
  67. package/core/index.d.ts +486 -9
  68. package/core/index.d.ts.map +1 -1
  69. package/core/index.esm.js +501 -1728
  70. package/core/path/index.cjs.js +6 -234
  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 -232
  74. package/core/platform/index.cjs.js +5 -216
  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 -212
  78. package/heuristics/dependencies/index.cjs.js +95 -492
  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 -466
  82. package/heuristics/entry-points/index.cjs.js +91 -795
  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 +72 -776
  86. package/heuristics/framework/index.cjs.js +1481 -1410
  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 +1417 -1346
  90. package/heuristics/index.cjs.js +3206 -3301
  91. package/heuristics/index.d.ts +4 -5
  92. package/heuristics/index.d.ts.map +1 -1
  93. package/heuristics/index.esm.js +3231 -3326
  94. package/heuristics/project-type/index.cjs.js +1487 -1437
  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 +1416 -1366
  98. package/index.cjs.js +3044 -3533
  99. package/index.d.ts +44 -10
  100. package/index.d.ts.map +1 -1
  101. package/index.esm.js +2900 -3377
  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 -577
  107. package/nx/index.d.ts +279 -4
  108. package/nx/index.d.ts.map +1 -1
  109. package/nx/index.esm.js +145 -554
  110. package/package.json +13 -12
  111. package/project/config/index.cjs.js +122 -1062
  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 -1043
  115. package/project/index.cjs.js +323 -1100
  116. package/project/index.d.ts +4 -5
  117. package/project/index.d.ts.map +1 -1
  118. package/project/index.esm.js +302 -1076
  119. package/project/package/index.cjs.js +191 -472
  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 -458
  123. package/project/root/index.cjs.js +107 -416
  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 -405
  127. package/project/traversal/index.cjs.js +94 -621
  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 -607
  131. package/tech/backend/index.cjs.js +221 -507
  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 -486
  135. package/tech/build/index.cjs.js +348 -635
  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 -613
  139. package/tech/frontend/index.cjs.js +505 -684
  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 -660
  143. package/tech/index.cjs.js +1580 -1420
  144. package/tech/index.d.ts +55 -32
  145. package/tech/index.d.ts.map +1 -1
  146. package/tech/index.esm.js +1513 -1353
  147. package/tech/legacy/index.cjs.js +97 -448
  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 -430
  151. package/tech/linting/index.cjs.js +136 -522
  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 -502
  155. package/tech/monorepo/index.cjs.js +244 -572
  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 -552
  159. package/tech/testing/index.cjs.js +214 -570
  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 -552
  163. package/tech/types/index.cjs.js +121 -505
  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 -483
  167. package/vfs/index.cjs.js +647 -1142
  168. package/vfs/index.d.ts +360 -6
  169. package/vfs/index.d.ts.map +1 -1
  170. package/vfs/index.esm.js +672 -1167
  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 -28
  175. package/cli/commands/analyze.d.ts.map +0 -1
  176. package/cli/commands/config.d.ts +0 -27
  177. package/cli/commands/config.d.ts.map +0 -1
  178. package/cli/commands/deps.d.ts +0 -24
  179. package/cli/commands/deps.d.ts.map +0 -1
  180. package/cli/commands/tree.d.ts +0 -36
  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 -158
  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 -91
  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 -66
  197. package/core/errors/structured-errors.d.ts.map +0 -1
  198. package/core/fs/directory.d.ts +0 -91
  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 -94
  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 -42
  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 -113
  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 -111
  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 -67
  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 -179
  439. package/vfs/types.d.ts.map +0 -1
@@ -1,393 +1,16 @@
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 { exists } from '../../_shared/core/fs/stat/index.esm.js';
12
+ import { join } from '../../_shared/core/path/join/index.esm.js';
13
+ import { collectAllDependencies, parseVersionString, locateConfigFile } from '../../_shared/tech/shared-utils/detector-helpers/index.esm.js';
391
14
 
392
15
  /**
393
16
  * Global log level registry.
@@ -427,6 +50,13 @@ function isSensitiveKey(key) {
427
50
  *
428
51
  * @param obj - Object to sanitize
429
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
+ * ```
430
60
  */
431
61
  function sanitize(obj) {
432
62
  if (obj === null || obj === undefined) {
@@ -477,7 +107,7 @@ function formatMessage(namespace, message, meta) {
477
107
  * @param options - Logger configuration options
478
108
  * @returns A configured scoped logger instance
479
109
  *
480
- * @example
110
+ * @example Creating a scoped logger
481
111
  * ```typescript
482
112
  * const logger = createScopedLogger('project-scope')
483
113
  * logger.setLogLevel('debug')
@@ -514,7 +144,7 @@ function createScopedLogger(namespace, options = {}) {
514
144
  * Default logger instance for the project-scope library.
515
145
  * Use this for general logging within the library.
516
146
  *
517
- * @example
147
+ * @example Using the default logger
518
148
  * ```typescript
519
149
  * import { logger } from '@hyperfrontend/project-scope/core'
520
150
  *
@@ -531,6 +161,14 @@ createScopedLogger('project-scope:fs');
531
161
  * @param filePath - Path to file
532
162
  * @param encoding - File encoding (default: utf-8)
533
163
  * @returns File contents or null if file doesn't exist
164
+ *
165
+ * @example Reading file if it exists
166
+ * ```typescript
167
+ * const content = readFileIfExists('./optional-config.json')
168
+ * if (content) {
169
+ * // File existed, use content
170
+ * }
171
+ * ```
534
172
  */
535
173
  function readFileIfExists(filePath, encoding = 'utf-8') {
536
174
  if (!existsSync(filePath)) {
@@ -544,33 +182,12 @@ function readFileIfExists(filePath, encoding = 'utf-8') {
544
182
  }
545
183
  }
546
184
 
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
185
  createScopedLogger('project-scope:fs:dir');
560
186
 
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
187
  createScopedLogger('project-scope:fs:traversal');
573
188
 
189
+ createScopedLogger('project-scope:fs:write');
190
+
574
191
  const packageLogger = createScopedLogger('project-scope:project:package');
575
192
  /**
576
193
  * Verifies that a value is an object with only string values,
@@ -640,6 +257,16 @@ function validatePackageJson(data) {
640
257
  *
641
258
  * @param projectPath - Project directory path or path to package.json
642
259
  * @returns Parsed package.json or null if not found
260
+ *
261
+ * @example Reading package.json if it exists
262
+ * ```typescript
263
+ * import { readPackageJsonIfExists } from '@hyperfrontend/project-scope'
264
+ *
265
+ * const pkg = readPackageJsonIfExists('/path/to/project')
266
+ * if (pkg) {
267
+ * console.log('Found:', pkg.name)
268
+ * }
269
+ * ```
643
270
  */
644
271
  function readPackageJsonIfExists(projectPath) {
645
272
  const packageJsonPath = projectPath.endsWith('package.json') ? projectPath : join$1(projectPath, 'package.json');
@@ -659,109 +286,58 @@ function readPackageJsonIfExists(projectPath) {
659
286
  }
660
287
  }
661
288
 
289
+ /** Config patterns for Cypress */
290
+ const CYPRESS_CONFIG_PATTERNS = ['cypress.config.js', 'cypress.config.ts', 'cypress.config.mjs', 'cypress.json'];
662
291
  /**
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.
292
+ * Detect Cypress in project.
720
293
  *
721
294
  * @param projectPath - Project directory path
722
295
  * @param packageJson - Optional pre-loaded package.json
723
296
  * @returns Detection result or null if not detected
297
+ *
298
+ * @example Detecting Cypress testing framework
299
+ * ```typescript
300
+ * import { cypressDetector } from '@hyperfrontend/project-scope'
301
+ *
302
+ * const result = cypressDetector('./my-project')
303
+ * if (result) {
304
+ * console.log(`Cypress ${result.version} detected (${result.confidence}% confidence)`)
305
+ * // => "Cypress 13.6.0 detected (95% confidence)"
306
+ * }
307
+ * ```
724
308
  */
725
- function jestDetector(projectPath, packageJson) {
309
+ function cypressDetector(projectPath, packageJson) {
726
310
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
727
311
  const sources = [];
728
312
  let confidence = 0;
729
313
  let version;
730
314
  const deps = collectAllDependencies(pkg);
731
- if (deps['jest']) {
315
+ if (deps['cypress']) {
732
316
  confidence += 60;
733
- version = parseVersionString(deps['jest']);
734
- sources.push({ type: 'package.json', field: 'dependencies.jest' });
317
+ version = parseVersionString(deps['cypress']);
318
+ sources.push({ type: 'package.json', field: 'dependencies.cypress' });
735
319
  }
736
- const configPath = locateConfigFile(projectPath, JEST_CONFIG_PATTERNS);
320
+ const configPath = locateConfigFile(projectPath, CYPRESS_CONFIG_PATTERNS);
737
321
  if (configPath) {
738
322
  confidence += 30;
739
323
  sources.push({ type: 'config-file', path: configPath });
740
324
  }
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')) {
325
+ if (exists(join$1(projectPath, 'cypress'))) {
747
326
  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' });
327
+ sources.push({ type: 'directory', path: 'cypress/' });
753
328
  }
754
- if (deps['ts-jest']) {
329
+ const e2eScript = pkg?.scripts?.['e2e'] ?? pkg?.scripts?.['test:e2e'] ?? '';
330
+ if (e2eScript.includes('cypress')) {
755
331
  confidence += 5;
756
- sources.push({ type: 'package.json', field: 'dependencies.ts-jest' });
332
+ sources.push({ type: 'package.json', field: 'scripts.e2e or scripts.test:e2e' });
757
333
  }
758
334
  if (confidence === 0) {
759
335
  return null;
760
336
  }
761
337
  return {
762
- id: 'jest',
763
- name: 'Jest',
764
- type: 'unit',
338
+ id: 'cypress',
339
+ name: 'Cypress',
340
+ type: 'e2e',
765
341
  version,
766
342
  configPath,
767
343
  confidence: min(confidence, 100),
@@ -769,51 +345,66 @@ function jestDetector(projectPath, packageJson) {
769
345
  };
770
346
  }
771
347
 
772
- /** Config patterns for Vitest */
773
- const VITEST_CONFIG_PATTERNS = ['vitest.config.js', 'vitest.config.ts', 'vitest.config.mjs'];
348
+ /** Config patterns for Jest */
349
+ const JEST_CONFIG_PATTERNS = ['jest.config.js', 'jest.config.ts', 'jest.config.mjs', 'jest.config.cjs', 'jest.config.json'];
774
350
  /**
775
- * Detect Vitest in project.
351
+ * Detect Jest in project.
776
352
  *
777
353
  * @param projectPath - Project directory path
778
354
  * @param packageJson - Optional pre-loaded package.json
779
355
  * @returns Detection result or null if not detected
356
+ *
357
+ * @example Detecting Jest testing framework
358
+ * ```typescript
359
+ * import { jestDetector } from '@hyperfrontend/project-scope'
360
+ *
361
+ * const result = jestDetector('./my-project')
362
+ * if (result) {
363
+ * console.log(`Jest ${result.version} detected`)
364
+ * console.log('Sources:', result.detectedFrom.map(s => s.type))
365
+ * // => "Sources: ['package.json', 'config-file']"
366
+ * }
367
+ * ```
780
368
  */
781
- function vitestDetector(projectPath, packageJson) {
369
+ function jestDetector(projectPath, packageJson) {
782
370
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
783
371
  const sources = [];
784
372
  let confidence = 0;
785
373
  let version;
786
374
  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' });
375
+ if (deps['jest']) {
376
+ confidence += 60;
377
+ version = parseVersionString(deps['jest']);
378
+ sources.push({ type: 'package.json', field: 'dependencies.jest' });
791
379
  }
792
- const configPath = locateConfigFile(projectPath, VITEST_CONFIG_PATTERNS);
380
+ const configPath = locateConfigFile(projectPath, JEST_CONFIG_PATTERNS);
793
381
  if (configPath) {
794
- confidence += 25;
382
+ confidence += 30;
795
383
  sources.push({ type: 'config-file', path: configPath });
796
384
  }
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
- }
385
+ if (pkg && 'jest' in pkg) {
386
+ confidence += 20;
387
+ sources.push({ type: 'package.json', field: 'jest' });
805
388
  }
806
389
  const testScript = pkg?.scripts?.['test'] ?? '';
807
- if (testScript.includes('vitest')) {
390
+ if (testScript.includes('jest')) {
808
391
  confidence += 10;
809
392
  sources.push({ type: 'package.json', field: 'scripts.test' });
810
393
  }
394
+ if (deps['@types/jest']) {
395
+ confidence += 5;
396
+ sources.push({ type: 'package.json', field: 'dependencies.@types/jest' });
397
+ }
398
+ if (deps['ts-jest']) {
399
+ confidence += 5;
400
+ sources.push({ type: 'package.json', field: 'dependencies.ts-jest' });
401
+ }
811
402
  if (confidence === 0) {
812
403
  return null;
813
404
  }
814
405
  return {
815
- id: 'vitest',
816
- name: 'Vitest',
406
+ id: 'jest',
407
+ name: 'Jest',
817
408
  type: 'unit',
818
409
  version,
819
410
  configPath,
@@ -830,6 +421,17 @@ const MOCHA_CONFIG_PATTERNS = ['.mocharc.js', '.mocharc.json', '.mocharc.yaml',
830
421
  * @param projectPath - Project directory path
831
422
  * @param packageJson - Optional pre-loaded package.json
832
423
  * @returns Detection result or null if not detected
424
+ *
425
+ * @example Detecting Mocha testing framework
426
+ * ```typescript
427
+ * import { mochaDetector } from '@hyperfrontend/project-scope'
428
+ *
429
+ * const result = mochaDetector('./my-project')
430
+ * if (result) {
431
+ * console.log(`Mocha ${result.version} detected (${result.confidence}%)`)
432
+ * // => "Mocha 10.2.0 detected (95%)"
433
+ * }
434
+ * ```
833
435
  */
834
436
  function mochaDetector(projectPath, packageJson) {
835
437
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
@@ -874,37 +476,53 @@ function mochaDetector(projectPath, packageJson) {
874
476
  };
875
477
  }
876
478
 
877
- /** Config patterns for Cypress */
878
- const CYPRESS_CONFIG_PATTERNS = ['cypress.config.js', 'cypress.config.ts', 'cypress.config.mjs', 'cypress.json'];
479
+ /** Config patterns for Playwright */
480
+ const PLAYWRIGHT_CONFIG_PATTERNS = ['playwright.config.js', 'playwright.config.ts', 'playwright.config.mjs'];
879
481
  /**
880
- * Detect Cypress in project.
482
+ * Detect Playwright in project.
881
483
  *
882
484
  * @param projectPath - Project directory path
883
485
  * @param packageJson - Optional pre-loaded package.json
884
486
  * @returns Detection result or null if not detected
487
+ *
488
+ * @example Detecting Playwright testing framework
489
+ * ```typescript
490
+ * import { playwrightDetector } from '@hyperfrontend/project-scope'
491
+ *
492
+ * const result = playwrightDetector('./my-project')
493
+ * if (result) {
494
+ * console.log(`Playwright ${result.version} (${result.type} tests)`)
495
+ * // => "Playwright 1.42.0 (e2e tests)"
496
+ * }
497
+ * ```
885
498
  */
886
- function cypressDetector(projectPath, packageJson) {
499
+ function playwrightDetector(projectPath, packageJson) {
887
500
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
888
501
  const sources = [];
889
502
  let confidence = 0;
890
503
  let version;
891
504
  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' });
505
+ if (deps['@playwright/test']) {
506
+ confidence += 70;
507
+ version = parseVersionString(deps['@playwright/test']);
508
+ sources.push({ type: 'package.json', field: 'dependencies.@playwright/test' });
896
509
  }
897
- const configPath = locateConfigFile(projectPath, CYPRESS_CONFIG_PATTERNS);
510
+ if (deps['playwright']) {
511
+ confidence += 50;
512
+ version = version ?? parseVersionString(deps['playwright']);
513
+ sources.push({ type: 'package.json', field: 'dependencies.playwright' });
514
+ }
515
+ const configPath = locateConfigFile(projectPath, PLAYWRIGHT_CONFIG_PATTERNS);
898
516
  if (configPath) {
899
- confidence += 30;
517
+ confidence += 25;
900
518
  sources.push({ type: 'config-file', path: configPath });
901
519
  }
902
- if (exists(join$1(projectPath, 'cypress'))) {
903
- confidence += 10;
904
- sources.push({ type: 'directory', path: 'cypress/' });
520
+ if (exists(join$1(projectPath, 'e2e')) || exists(join$1(projectPath, 'tests'))) {
521
+ confidence += 5;
522
+ sources.push({ type: 'directory', path: 'e2e/ or tests/' });
905
523
  }
906
524
  const e2eScript = pkg?.scripts?.['e2e'] ?? pkg?.scripts?.['test:e2e'] ?? '';
907
- if (e2eScript.includes('cypress')) {
525
+ if (e2eScript.includes('playwright')) {
908
526
  confidence += 5;
909
527
  sources.push({ type: 'package.json', field: 'scripts.e2e or scripts.test:e2e' });
910
528
  }
@@ -912,8 +530,8 @@ function cypressDetector(projectPath, packageJson) {
912
530
  return null;
913
531
  }
914
532
  return {
915
- id: 'cypress',
916
- name: 'Cypress',
533
+ id: 'playwright',
534
+ name: 'Playwright',
917
535
  type: 'e2e',
918
536
  version,
919
537
  configPath,
@@ -922,52 +540,64 @@ function cypressDetector(projectPath, packageJson) {
922
540
  };
923
541
  }
924
542
 
925
- /** Config patterns for Playwright */
926
- const PLAYWRIGHT_CONFIG_PATTERNS = ['playwright.config.js', 'playwright.config.ts', 'playwright.config.mjs'];
543
+ /** Config patterns for Vitest */
544
+ const VITEST_CONFIG_PATTERNS = ['vitest.config.js', 'vitest.config.ts', 'vitest.config.mjs'];
927
545
  /**
928
- * Detect Playwright in project.
546
+ * Detect Vitest in project.
929
547
  *
930
548
  * @param projectPath - Project directory path
931
549
  * @param packageJson - Optional pre-loaded package.json
932
550
  * @returns Detection result or null if not detected
551
+ *
552
+ * @example Detecting Vitest testing framework
553
+ * ```typescript
554
+ * import { vitestDetector } from '@hyperfrontend/project-scope'
555
+ *
556
+ * const result = vitestDetector('./my-project')
557
+ * if (result) {
558
+ * console.log(`Vitest ${result.version} detected`)
559
+ * console.log('Config:', result.configPath)
560
+ * // => "Config: vitest.config.ts"
561
+ * }
562
+ * ```
933
563
  */
934
- function playwrightDetector(projectPath, packageJson) {
564
+ function vitestDetector(projectPath, packageJson) {
935
565
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
936
566
  const sources = [];
937
567
  let confidence = 0;
938
568
  let version;
939
569
  const deps = collectAllDependencies(pkg);
940
- if (deps['@playwright/test']) {
570
+ if (deps['vitest']) {
941
571
  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' });
572
+ version = parseVersionString(deps['vitest']);
573
+ sources.push({ type: 'package.json', field: 'dependencies.vitest' });
949
574
  }
950
- const configPath = locateConfigFile(projectPath, PLAYWRIGHT_CONFIG_PATTERNS);
575
+ const configPath = locateConfigFile(projectPath, VITEST_CONFIG_PATTERNS);
951
576
  if (configPath) {
952
577
  confidence += 25;
953
578
  sources.push({ type: 'config-file', path: configPath });
954
579
  }
955
- if (exists(join$1(projectPath, 'e2e')) || exists(join$1(projectPath, 'tests'))) {
956
- confidence += 5;
957
- sources.push({ type: 'directory', path: 'e2e/ or tests/' });
580
+ if (!configPath) {
581
+ const viteConfig = exists(join$1(projectPath, 'vite.config.ts')) ||
582
+ exists(join$1(projectPath, 'vite.config.js')) ||
583
+ exists(join$1(projectPath, 'vite.config.mjs'));
584
+ if (viteConfig && deps['vitest']) {
585
+ confidence += 5;
586
+ sources.push({ type: 'config-file', path: 'vite.config.*' });
587
+ }
958
588
  }
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' });
589
+ const testScript = pkg?.scripts?.['test'] ?? '';
590
+ if (testScript.includes('vitest')) {
591
+ confidence += 10;
592
+ sources.push({ type: 'package.json', field: 'scripts.test' });
963
593
  }
964
594
  if (confidence === 0) {
965
595
  return null;
966
596
  }
967
597
  return {
968
- id: 'playwright',
969
- name: 'Playwright',
970
- type: 'e2e',
598
+ id: 'vitest',
599
+ name: 'Vitest',
600
+ type: 'unit',
971
601
  version,
972
602
  configPath,
973
603
  confidence: min(confidence, 100),
@@ -989,6 +619,21 @@ const testingDetectors = [
989
619
  * @param projectPath - Project directory path
990
620
  * @param packageJson - Optional pre-loaded package.json
991
621
  * @returns Array of detected testing frameworks, sorted by confidence
622
+ *
623
+ * @example Detecting multiple testing frameworks
624
+ * ```typescript
625
+ * import { detectTestingFrameworks } from '@hyperfrontend/project-scope'
626
+ *
627
+ * const frameworks = detectTestingFrameworks('./my-project')
628
+ * // => [
629
+ * // { id: 'jest', name: 'Jest', type: 'unit', confidence: 95, ... },
630
+ * // { id: 'cypress', name: 'Cypress', type: 'e2e', confidence: 85, ... }
631
+ * // ]
632
+ *
633
+ * // Results are sorted by confidence (highest first)
634
+ * const primary = frameworks[0]?.name ?? 'None'
635
+ * console.log(`Primary testing framework: ${primary}`)
636
+ * ```
992
637
  */
993
638
  function detectTestingFrameworks(projectPath, packageJson) {
994
639
  const pkg = packageJson ?? readPackageJsonIfExists(projectPath);
@@ -1003,4 +648,3 @@ function detectTestingFrameworks(projectPath, packageJson) {
1003
648
  }
1004
649
 
1005
650
  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