@hyperfrontend/project-scope 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/ARCHITECTURE.md +370 -0
  2. package/CHANGELOG.md +10 -0
  3. package/FUNDING.md +141 -0
  4. package/LICENSE.md +21 -0
  5. package/README.md +242 -0
  6. package/SECURITY.md +82 -0
  7. package/analyze.d.ts +33 -0
  8. package/analyze.d.ts.map +1 -0
  9. package/cli/commands/analyze.d.ts +20 -0
  10. package/cli/commands/analyze.d.ts.map +1 -0
  11. package/cli/commands/config.d.ts +20 -0
  12. package/cli/commands/config.d.ts.map +1 -0
  13. package/cli/commands/deps.d.ts +18 -0
  14. package/cli/commands/deps.d.ts.map +1 -0
  15. package/cli/commands/tree.d.ts +24 -0
  16. package/cli/commands/tree.d.ts.map +1 -0
  17. package/cli/index.cjs.js +6639 -0
  18. package/cli/index.cjs.js.map +1 -0
  19. package/cli/index.d.ts +7 -0
  20. package/cli/index.d.ts.map +1 -0
  21. package/cli/index.esm.js +6629 -0
  22. package/cli/index.esm.js.map +1 -0
  23. package/cli/run.d.ts +25 -0
  24. package/cli/run.d.ts.map +1 -0
  25. package/cli/types.d.ts +55 -0
  26. package/cli/types.d.ts.map +1 -0
  27. package/core/cache.d.ts +157 -0
  28. package/core/cache.d.ts.map +1 -0
  29. package/core/encoding/convert.d.ts +32 -0
  30. package/core/encoding/convert.d.ts.map +1 -0
  31. package/core/encoding/detect.d.ts +86 -0
  32. package/core/encoding/detect.d.ts.map +1 -0
  33. package/core/encoding/index.cjs.js +751 -0
  34. package/core/encoding/index.cjs.js.map +1 -0
  35. package/core/encoding/index.d.ts +3 -0
  36. package/core/encoding/index.d.ts.map +1 -0
  37. package/core/encoding/index.esm.js +736 -0
  38. package/core/encoding/index.esm.js.map +1 -0
  39. package/core/errors/structured-errors.d.ts +64 -0
  40. package/core/errors/structured-errors.d.ts.map +1 -0
  41. package/core/fs/directory.d.ts +88 -0
  42. package/core/fs/directory.d.ts.map +1 -0
  43. package/core/fs/index.cjs.js +1079 -0
  44. package/core/fs/index.cjs.js.map +1 -0
  45. package/core/fs/index.d.ts +6 -0
  46. package/core/fs/index.d.ts.map +1 -0
  47. package/core/fs/index.esm.js +1056 -0
  48. package/core/fs/index.esm.js.map +1 -0
  49. package/core/fs/read.d.ts +86 -0
  50. package/core/fs/read.d.ts.map +1 -0
  51. package/core/fs/stat.d.ts +58 -0
  52. package/core/fs/stat.d.ts.map +1 -0
  53. package/core/fs/traversal.d.ts +26 -0
  54. package/core/fs/traversal.d.ts.map +1 -0
  55. package/core/fs/write.d.ts +75 -0
  56. package/core/fs/write.d.ts.map +1 -0
  57. package/core/index.cjs.js +2376 -0
  58. package/core/index.cjs.js.map +1 -0
  59. package/core/index.d.ts +9 -0
  60. package/core/index.d.ts.map +1 -0
  61. package/core/index.esm.js +2286 -0
  62. package/core/index.esm.js.map +1 -0
  63. package/core/logger.d.ts +111 -0
  64. package/core/logger.d.ts.map +1 -0
  65. package/core/path/index.cjs.js +254 -0
  66. package/core/path/index.cjs.js.map +1 -0
  67. package/core/path/index.d.ts +5 -0
  68. package/core/path/index.d.ts.map +1 -0
  69. package/core/path/index.esm.js +233 -0
  70. package/core/path/index.esm.js.map +1 -0
  71. package/core/path/join.d.ts +17 -0
  72. package/core/path/join.d.ts.map +1 -0
  73. package/core/path/normalize.d.ts +37 -0
  74. package/core/path/normalize.d.ts.map +1 -0
  75. package/core/path/resolve.d.ts +52 -0
  76. package/core/path/resolve.d.ts.map +1 -0
  77. package/core/path/segments.d.ts +59 -0
  78. package/core/path/segments.d.ts.map +1 -0
  79. package/core/patterns/glob.d.ts +46 -0
  80. package/core/patterns/glob.d.ts.map +1 -0
  81. package/core/platform/detect.d.ts +66 -0
  82. package/core/platform/detect.d.ts.map +1 -0
  83. package/core/platform/index.cjs.js +241 -0
  84. package/core/platform/index.cjs.js.map +1 -0
  85. package/core/platform/index.d.ts +3 -0
  86. package/core/platform/index.d.ts.map +1 -0
  87. package/core/platform/index.esm.js +226 -0
  88. package/core/platform/index.esm.js.map +1 -0
  89. package/core/platform/line-endings.d.ts +48 -0
  90. package/core/platform/line-endings.d.ts.map +1 -0
  91. package/heuristics/dependencies/analyze.d.ts +77 -0
  92. package/heuristics/dependencies/analyze.d.ts.map +1 -0
  93. package/heuristics/dependencies/index.cjs.js +1126 -0
  94. package/heuristics/dependencies/index.cjs.js.map +1 -0
  95. package/heuristics/dependencies/index.d.ts +2 -0
  96. package/heuristics/dependencies/index.d.ts.map +1 -0
  97. package/heuristics/dependencies/index.esm.js +1122 -0
  98. package/heuristics/dependencies/index.esm.js.map +1 -0
  99. package/heuristics/entry-points/discover.d.ts +86 -0
  100. package/heuristics/entry-points/discover.d.ts.map +1 -0
  101. package/heuristics/entry-points/index.cjs.js +1581 -0
  102. package/heuristics/entry-points/index.cjs.js.map +1 -0
  103. package/heuristics/entry-points/index.d.ts +2 -0
  104. package/heuristics/entry-points/index.d.ts.map +1 -0
  105. package/heuristics/entry-points/index.esm.js +1577 -0
  106. package/heuristics/entry-points/index.esm.js.map +1 -0
  107. package/heuristics/framework/identify.d.ts +84 -0
  108. package/heuristics/framework/identify.d.ts.map +1 -0
  109. package/heuristics/framework/index.cjs.js +3618 -0
  110. package/heuristics/framework/index.cjs.js.map +1 -0
  111. package/heuristics/framework/index.d.ts +2 -0
  112. package/heuristics/framework/index.d.ts.map +1 -0
  113. package/heuristics/framework/index.esm.js +3614 -0
  114. package/heuristics/framework/index.esm.js.map +1 -0
  115. package/heuristics/index.cjs.js +4833 -0
  116. package/heuristics/index.cjs.js.map +1 -0
  117. package/heuristics/index.d.ts +5 -0
  118. package/heuristics/index.d.ts.map +1 -0
  119. package/heuristics/index.esm.js +4822 -0
  120. package/heuristics/index.esm.js.map +1 -0
  121. package/heuristics/project-type/detect.d.ts +61 -0
  122. package/heuristics/project-type/detect.d.ts.map +1 -0
  123. package/heuristics/project-type/index.cjs.js +3633 -0
  124. package/heuristics/project-type/index.cjs.js.map +1 -0
  125. package/heuristics/project-type/index.d.ts +2 -0
  126. package/heuristics/project-type/index.d.ts.map +1 -0
  127. package/heuristics/project-type/index.esm.js +3631 -0
  128. package/heuristics/project-type/index.esm.js.map +1 -0
  129. package/index.cjs.js +10255 -0
  130. package/index.cjs.js.map +1 -0
  131. package/index.d.ts +10 -0
  132. package/index.d.ts.map +1 -0
  133. package/index.esm.js +10006 -0
  134. package/index.esm.js.map +1 -0
  135. package/models/index.cjs.js +3 -0
  136. package/models/index.cjs.js.map +1 -0
  137. package/models/index.d.ts +176 -0
  138. package/models/index.d.ts.map +1 -0
  139. package/models/index.esm.js +2 -0
  140. package/models/index.esm.js.map +1 -0
  141. package/nx/detect.d.ts +105 -0
  142. package/nx/detect.d.ts.map +1 -0
  143. package/nx/devkit-loader.d.ts +62 -0
  144. package/nx/devkit-loader.d.ts.map +1 -0
  145. package/nx/index.cjs.js +1302 -0
  146. package/nx/index.cjs.js.map +1 -0
  147. package/nx/index.d.ts +4 -0
  148. package/nx/index.d.ts.map +1 -0
  149. package/nx/index.esm.js +1286 -0
  150. package/nx/index.esm.js.map +1 -0
  151. package/nx/project-config.d.ts +109 -0
  152. package/nx/project-config.d.ts.map +1 -0
  153. package/package.json +218 -0
  154. package/project/config/detect.d.ts +77 -0
  155. package/project/config/detect.d.ts.map +1 -0
  156. package/project/config/index.cjs.js +1982 -0
  157. package/project/config/index.cjs.js.map +1 -0
  158. package/project/config/index.d.ts +4 -0
  159. package/project/config/index.d.ts.map +1 -0
  160. package/project/config/index.esm.js +1971 -0
  161. package/project/config/index.esm.js.map +1 -0
  162. package/project/config/parse.d.ts +53 -0
  163. package/project/config/parse.d.ts.map +1 -0
  164. package/project/config/patterns.d.ts +31 -0
  165. package/project/config/patterns.d.ts.map +1 -0
  166. package/project/index.cjs.js +2585 -0
  167. package/project/index.cjs.js.map +1 -0
  168. package/project/index.d.ts +5 -0
  169. package/project/index.d.ts.map +1 -0
  170. package/project/index.esm.js +2549 -0
  171. package/project/index.esm.js.map +1 -0
  172. package/project/package/dependencies.d.ts +101 -0
  173. package/project/package/dependencies.d.ts.map +1 -0
  174. package/project/package/index.cjs.js +972 -0
  175. package/project/package/index.cjs.js.map +1 -0
  176. package/project/package/index.d.ts +3 -0
  177. package/project/package/index.d.ts.map +1 -0
  178. package/project/package/index.esm.js +957 -0
  179. package/project/package/index.esm.js.map +1 -0
  180. package/project/package/read.d.ts +66 -0
  181. package/project/package/read.d.ts.map +1 -0
  182. package/project/root/detect.d.ts +65 -0
  183. package/project/root/detect.d.ts.map +1 -0
  184. package/project/root/index.cjs.js +860 -0
  185. package/project/root/index.cjs.js.map +1 -0
  186. package/project/root/index.d.ts +2 -0
  187. package/project/root/index.d.ts.map +1 -0
  188. package/project/root/index.esm.js +853 -0
  189. package/project/root/index.esm.js.map +1 -0
  190. package/project/traversal/index.cjs.js +1179 -0
  191. package/project/traversal/index.cjs.js.map +1 -0
  192. package/project/traversal/index.d.ts +3 -0
  193. package/project/traversal/index.d.ts.map +1 -0
  194. package/project/traversal/index.esm.js +1173 -0
  195. package/project/traversal/index.esm.js.map +1 -0
  196. package/project/traversal/search.d.ts +59 -0
  197. package/project/traversal/search.d.ts.map +1 -0
  198. package/project/traversal/walk.d.ts +63 -0
  199. package/project/traversal/walk.d.ts.map +1 -0
  200. package/tech/backend/detect-all.d.ts +13 -0
  201. package/tech/backend/detect-all.d.ts.map +1 -0
  202. package/tech/backend/express.d.ts +11 -0
  203. package/tech/backend/express.d.ts.map +1 -0
  204. package/tech/backend/fastify.d.ts +11 -0
  205. package/tech/backend/fastify.d.ts.map +1 -0
  206. package/tech/backend/hono.d.ts +11 -0
  207. package/tech/backend/hono.d.ts.map +1 -0
  208. package/tech/backend/index.cjs.js +939 -0
  209. package/tech/backend/index.cjs.js.map +1 -0
  210. package/tech/backend/index.d.ts +8 -0
  211. package/tech/backend/index.d.ts.map +1 -0
  212. package/tech/backend/index.esm.js +931 -0
  213. package/tech/backend/index.esm.js.map +1 -0
  214. package/tech/backend/koa.d.ts +11 -0
  215. package/tech/backend/koa.d.ts.map +1 -0
  216. package/tech/backend/nestjs.d.ts +11 -0
  217. package/tech/backend/nestjs.d.ts.map +1 -0
  218. package/tech/backend/types.d.ts +31 -0
  219. package/tech/backend/types.d.ts.map +1 -0
  220. package/tech/build/babel.d.ts +13 -0
  221. package/tech/build/babel.d.ts.map +1 -0
  222. package/tech/build/detect-all.d.ts +13 -0
  223. package/tech/build/detect-all.d.ts.map +1 -0
  224. package/tech/build/esbuild.d.ts +11 -0
  225. package/tech/build/esbuild.d.ts.map +1 -0
  226. package/tech/build/index.cjs.js +1118 -0
  227. package/tech/build/index.cjs.js.map +1 -0
  228. package/tech/build/index.d.ts +10 -0
  229. package/tech/build/index.d.ts.map +1 -0
  230. package/tech/build/index.esm.js +1102 -0
  231. package/tech/build/index.esm.js.map +1 -0
  232. package/tech/build/parcel.d.ts +13 -0
  233. package/tech/build/parcel.d.ts.map +1 -0
  234. package/tech/build/rollup.d.ts +13 -0
  235. package/tech/build/rollup.d.ts.map +1 -0
  236. package/tech/build/swc.d.ts +13 -0
  237. package/tech/build/swc.d.ts.map +1 -0
  238. package/tech/build/types.d.ts +31 -0
  239. package/tech/build/types.d.ts.map +1 -0
  240. package/tech/build/vite.d.ts +13 -0
  241. package/tech/build/vite.d.ts.map +1 -0
  242. package/tech/build/webpack.d.ts +13 -0
  243. package/tech/build/webpack.d.ts.map +1 -0
  244. package/tech/frontend/angular.d.ts +11 -0
  245. package/tech/frontend/angular.d.ts.map +1 -0
  246. package/tech/frontend/astro.d.ts +11 -0
  247. package/tech/frontend/astro.d.ts.map +1 -0
  248. package/tech/frontend/detect-all.d.ts +13 -0
  249. package/tech/frontend/detect-all.d.ts.map +1 -0
  250. package/tech/frontend/gatsby.d.ts +11 -0
  251. package/tech/frontend/gatsby.d.ts.map +1 -0
  252. package/tech/frontend/index.cjs.js +1310 -0
  253. package/tech/frontend/index.cjs.js.map +1 -0
  254. package/tech/frontend/index.d.ts +15 -0
  255. package/tech/frontend/index.d.ts.map +1 -0
  256. package/tech/frontend/index.esm.js +1295 -0
  257. package/tech/frontend/index.esm.js.map +1 -0
  258. package/tech/frontend/nextjs.d.ts +11 -0
  259. package/tech/frontend/nextjs.d.ts.map +1 -0
  260. package/tech/frontend/nuxt.d.ts +11 -0
  261. package/tech/frontend/nuxt.d.ts.map +1 -0
  262. package/tech/frontend/qwik.d.ts +11 -0
  263. package/tech/frontend/qwik.d.ts.map +1 -0
  264. package/tech/frontend/react.d.ts +11 -0
  265. package/tech/frontend/react.d.ts.map +1 -0
  266. package/tech/frontend/remix.d.ts +11 -0
  267. package/tech/frontend/remix.d.ts.map +1 -0
  268. package/tech/frontend/solid.d.ts +11 -0
  269. package/tech/frontend/solid.d.ts.map +1 -0
  270. package/tech/frontend/svelte.d.ts +11 -0
  271. package/tech/frontend/svelte.d.ts.map +1 -0
  272. package/tech/frontend/sveltekit.d.ts +11 -0
  273. package/tech/frontend/sveltekit.d.ts.map +1 -0
  274. package/tech/frontend/types.d.ts +35 -0
  275. package/tech/frontend/types.d.ts.map +1 -0
  276. package/tech/frontend/vue.d.ts +11 -0
  277. package/tech/frontend/vue.d.ts.map +1 -0
  278. package/tech/index.cjs.js +3684 -0
  279. package/tech/index.cjs.js.map +1 -0
  280. package/tech/index.d.ts +96 -0
  281. package/tech/index.d.ts.map +1 -0
  282. package/tech/index.esm.js +3603 -0
  283. package/tech/index.esm.js.map +1 -0
  284. package/tech/legacy/angularjs.d.ts +12 -0
  285. package/tech/legacy/angularjs.d.ts.map +1 -0
  286. package/tech/legacy/backbone.d.ts +11 -0
  287. package/tech/legacy/backbone.d.ts.map +1 -0
  288. package/tech/legacy/detect-all.d.ts +13 -0
  289. package/tech/legacy/detect-all.d.ts.map +1 -0
  290. package/tech/legacy/ember.d.ts +11 -0
  291. package/tech/legacy/ember.d.ts.map +1 -0
  292. package/tech/legacy/index.cjs.js +903 -0
  293. package/tech/legacy/index.cjs.js.map +1 -0
  294. package/tech/legacy/index.d.ts +7 -0
  295. package/tech/legacy/index.d.ts.map +1 -0
  296. package/tech/legacy/index.esm.js +896 -0
  297. package/tech/legacy/index.esm.js.map +1 -0
  298. package/tech/legacy/jquery.d.ts +11 -0
  299. package/tech/legacy/jquery.d.ts.map +1 -0
  300. package/tech/legacy/types.d.ts +33 -0
  301. package/tech/legacy/types.d.ts.map +1 -0
  302. package/tech/linting/biome.d.ts +11 -0
  303. package/tech/linting/biome.d.ts.map +1 -0
  304. package/tech/linting/detect-all.d.ts +13 -0
  305. package/tech/linting/detect-all.d.ts.map +1 -0
  306. package/tech/linting/eslint.d.ts +13 -0
  307. package/tech/linting/eslint.d.ts.map +1 -0
  308. package/tech/linting/index.cjs.js +992 -0
  309. package/tech/linting/index.cjs.js.map +1 -0
  310. package/tech/linting/index.d.ts +7 -0
  311. package/tech/linting/index.d.ts.map +1 -0
  312. package/tech/linting/index.esm.js +982 -0
  313. package/tech/linting/index.esm.js.map +1 -0
  314. package/tech/linting/prettier.d.ts +13 -0
  315. package/tech/linting/prettier.d.ts.map +1 -0
  316. package/tech/linting/stylelint.d.ts +13 -0
  317. package/tech/linting/stylelint.d.ts.map +1 -0
  318. package/tech/linting/types.d.ts +31 -0
  319. package/tech/linting/types.d.ts.map +1 -0
  320. package/tech/monorepo/detect-all.d.ts +13 -0
  321. package/tech/monorepo/detect-all.d.ts.map +1 -0
  322. package/tech/monorepo/index.cjs.js +1021 -0
  323. package/tech/monorepo/index.cjs.js.map +1 -0
  324. package/tech/monorepo/index.d.ts +10 -0
  325. package/tech/monorepo/index.d.ts.map +1 -0
  326. package/tech/monorepo/index.esm.js +1011 -0
  327. package/tech/monorepo/index.esm.js.map +1 -0
  328. package/tech/monorepo/lerna.d.ts +11 -0
  329. package/tech/monorepo/lerna.d.ts.map +1 -0
  330. package/tech/monorepo/npm-workspaces.d.ts +11 -0
  331. package/tech/monorepo/npm-workspaces.d.ts.map +1 -0
  332. package/tech/monorepo/nx.d.ts +11 -0
  333. package/tech/monorepo/nx.d.ts.map +1 -0
  334. package/tech/monorepo/pnpm-workspaces.d.ts +9 -0
  335. package/tech/monorepo/pnpm-workspaces.d.ts.map +1 -0
  336. package/tech/monorepo/rush.d.ts +11 -0
  337. package/tech/monorepo/rush.d.ts.map +1 -0
  338. package/tech/monorepo/turborepo.d.ts +11 -0
  339. package/tech/monorepo/turborepo.d.ts.map +1 -0
  340. package/tech/monorepo/types.d.ts +39 -0
  341. package/tech/monorepo/types.d.ts.map +1 -0
  342. package/tech/monorepo/yarn-workspaces.d.ts +11 -0
  343. package/tech/monorepo/yarn-workspaces.d.ts.map +1 -0
  344. package/tech/shared-utils/detector-helpers.d.ts +52 -0
  345. package/tech/shared-utils/detector-helpers.d.ts.map +1 -0
  346. package/tech/shared-utils/types.d.ts +41 -0
  347. package/tech/shared-utils/types.d.ts.map +1 -0
  348. package/tech/testing/cypress.d.ts +13 -0
  349. package/tech/testing/cypress.d.ts.map +1 -0
  350. package/tech/testing/detect-all.d.ts +13 -0
  351. package/tech/testing/detect-all.d.ts.map +1 -0
  352. package/tech/testing/index.cjs.js +1031 -0
  353. package/tech/testing/index.cjs.js.map +1 -0
  354. package/tech/testing/index.d.ts +8 -0
  355. package/tech/testing/index.d.ts.map +1 -0
  356. package/tech/testing/index.esm.js +1018 -0
  357. package/tech/testing/index.esm.js.map +1 -0
  358. package/tech/testing/jest.d.ts +13 -0
  359. package/tech/testing/jest.d.ts.map +1 -0
  360. package/tech/testing/mocha.d.ts +13 -0
  361. package/tech/testing/mocha.d.ts.map +1 -0
  362. package/tech/testing/playwright.d.ts +13 -0
  363. package/tech/testing/playwright.d.ts.map +1 -0
  364. package/tech/testing/types.d.ts +35 -0
  365. package/tech/testing/types.d.ts.map +1 -0
  366. package/tech/testing/vitest.d.ts +13 -0
  367. package/tech/testing/vitest.d.ts.map +1 -0
  368. package/tech/types/detectors.d.ts +67 -0
  369. package/tech/types/detectors.d.ts.map +1 -0
  370. package/tech/types/index.cjs.js +1045 -0
  371. package/tech/types/index.cjs.js.map +1 -0
  372. package/tech/types/index.d.ts +2 -0
  373. package/tech/types/index.d.ts.map +1 -0
  374. package/tech/types/index.esm.js +1039 -0
  375. package/tech/types/index.esm.js.map +1 -0
  376. package/vfs/commit.d.ts +32 -0
  377. package/vfs/commit.d.ts.map +1 -0
  378. package/vfs/diff.d.ts +73 -0
  379. package/vfs/diff.d.ts.map +1 -0
  380. package/vfs/factory.d.ts +37 -0
  381. package/vfs/factory.d.ts.map +1 -0
  382. package/vfs/fs-tree.d.ts +13 -0
  383. package/vfs/fs-tree.d.ts.map +1 -0
  384. package/vfs/index.cjs.js +1600 -0
  385. package/vfs/index.cjs.js.map +1 -0
  386. package/vfs/index.d.ts +6 -0
  387. package/vfs/index.d.ts.map +1 -0
  388. package/vfs/index.esm.js +1590 -0
  389. package/vfs/index.esm.js.map +1 -0
  390. package/vfs/types.d.ts +178 -0
  391. package/vfs/types.d.ts.map +1 -0
@@ -0,0 +1,370 @@
1
+ # Architecture
2
+
3
+ This document describes the architecture of `@hyperfrontend/project-scope`, a comprehensive library for analyzing JavaScript/TypeScript project structure, technology stack, and dependencies.
4
+
5
+ ## Overview
6
+
7
+ ```mermaid
8
+ graph LR
9
+ subgraph "High Level"
10
+ CLI[cli/]
11
+ ANALYZE[analyze.ts]
12
+ end
13
+
14
+ subgraph "Domain Logic"
15
+ TECH[tech/]
16
+ HEUR[heuristics/]
17
+ PROJ[project/]
18
+ NX[nx/]
19
+ VFS[vfs/]
20
+ end
21
+
22
+ subgraph "Foundation"
23
+ CORE[core/]
24
+ MODELS[models/]
25
+ end
26
+
27
+ CLI --> ANALYZE
28
+ ANALYZE --> TECH
29
+ ANALYZE --> HEUR
30
+ ANALYZE --> PROJ
31
+ ANALYZE --> NX
32
+
33
+ TECH --> CORE
34
+ TECH --> PROJ
35
+ HEUR --> CORE
36
+ HEUR --> PROJ
37
+ HEUR --> TECH
38
+ PROJ --> CORE
39
+ NX --> CORE
40
+ NX --> PROJ
41
+ VFS --> CORE
42
+
43
+ CLI --> MODELS
44
+ ANALYZE --> MODELS
45
+ TECH --> MODELS
46
+ HEUR --> MODELS
47
+ ```
48
+
49
+ ## Module Structure
50
+
51
+ ```
52
+ libs/project-scope/src/
53
+ ├── analyze.ts # Main entry point (analyzeProject)
54
+ ├── index.ts # Public exports
55
+ ├── cli/ # Command-line interface
56
+ ├── core/ # Foundation utilities
57
+ ├── heuristics/ # Intelligent detection algorithms
58
+ ├── models/ # TypeScript types and interfaces
59
+ ├── nx/ # NX workspace integration
60
+ ├── project/ # Project structure analysis
61
+ ├── tech/ # Technology stack detection
62
+ └── vfs/ # Virtual file system
63
+ ```
64
+
65
+ ## Data Flow
66
+
67
+ ### Analysis Pipeline
68
+
69
+ ```mermaid
70
+ sequenceDiagram
71
+ participant User
72
+ participant analyzeProject
73
+ participant tech/detectAll
74
+ participant heuristics
75
+ participant project
76
+ participant core/fs
77
+
78
+ User->>analyzeProject: analyzeProject('./my-project')
79
+ analyzeProject->>core/fs: readPackageJson
80
+ core/fs-->>analyzeProject: PackageJson
81
+
82
+ analyzeProject->>tech/detectAll: detectAll(path, pkg)
83
+ tech/detectAll->>core/fs: exists(), readFile()
84
+ core/fs-->>tech/detectAll: file contents
85
+ tech/detectAll-->>analyzeProject: AllDetections
86
+
87
+ analyzeProject->>heuristics: detectProjectType()
88
+ heuristics->>tech/detectAll: detectAll (cached)
89
+ heuristics-->>analyzeProject: ProjectTypeDetection
90
+
91
+ analyzeProject->>heuristics: discoverEntryPoints()
92
+ heuristics-->>analyzeProject: EntryPointInfo[]
93
+
94
+ analyzeProject->>project: detectConfigs()
95
+ project->>core/fs: findFiles()
96
+ project-->>analyzeProject: DetectedConfig[]
97
+
98
+ analyzeProject-->>User: AnalysisResult
99
+ ```
100
+
101
+ ## Core Components
102
+
103
+ ### 1. Analysis Engine (`analyze.ts`)
104
+
105
+ The main entry point that orchestrates all detection modules:
106
+
107
+ ```typescript
108
+ function analyzeProject(projectPath: string, options?: AnalyzeOptions): AnalysisResult
109
+ ```
110
+
111
+ **Responsibilities:**
112
+
113
+ - Coordinate all detection modules
114
+ - Aggregate results into unified structure
115
+ - Handle options for selective analysis
116
+ - Track analysis metadata (timing, version)
117
+
118
+ ### 2. Technology Detection (`tech/`)
119
+
120
+ Detects frameworks, build tools, and testing frameworks:
121
+
122
+ ```mermaid
123
+ graph TB
124
+ subgraph "tech/"
125
+ INDEX[index.ts/detectAll]
126
+ FE[frontend/]
127
+ BE[backend/]
128
+ BUILD[build/]
129
+ TEST[testing/]
130
+ MONO[monorepo/]
131
+ TYPES[types/]
132
+ LINT[linting/]
133
+ LEGACY[legacy/]
134
+ end
135
+
136
+ INDEX --> FE
137
+ INDEX --> BE
138
+ INDEX --> BUILD
139
+ INDEX --> TEST
140
+ INDEX --> MONO
141
+ INDEX --> TYPES
142
+ INDEX --> LINT
143
+ INDEX --> LEGACY
144
+
145
+ FE --> DETECT[Detection Results]
146
+ BE --> DETECT
147
+ BUILD --> DETECT
148
+ TEST --> DETECT
149
+ MONO --> DETECT
150
+ TYPES --> DETECT
151
+ LINT --> DETECT
152
+ LEGACY --> DETECT
153
+ ```
154
+
155
+ **Design Patterns:**
156
+
157
+ - Each detector implements a common interface
158
+ - Results include confidence scores (0-100)
159
+ - Detection sources are tracked for transparency
160
+ - Caching with 60-second TTL
161
+
162
+ ### 3. Heuristics (`heuristics/`)
163
+
164
+ Intelligent detection using multiple signals:
165
+
166
+ ```mermaid
167
+ graph LR
168
+ subgraph "Evidence Collection"
169
+ PKG[package.json patterns]
170
+ DIR[Directory structure]
171
+ FILES[File patterns]
172
+ TECH[Tech detections]
173
+ end
174
+
175
+ subgraph "Scoring"
176
+ SCORE[Score Aggregation]
177
+ CONF[Confidence Calculation]
178
+ end
179
+
180
+ PKG --> SCORE
181
+ DIR --> SCORE
182
+ FILES --> SCORE
183
+ TECH --> SCORE
184
+ SCORE --> CONF
185
+ CONF --> |ProjectTypeDetection| RESULT[Result with Evidence]
186
+ ```
187
+
188
+ **Key Characteristics:**
189
+
190
+ - Multi-signal analysis for accuracy
191
+ - Evidence tracking for explainability
192
+ - Confidence scoring for reliability indication
193
+ - Caching for performance
194
+
195
+ ### 4. Virtual File System (`vfs/`)
196
+
197
+ Transactional file operations:
198
+
199
+ ```mermaid
200
+ stateDiagram-v2
201
+ [*] --> Clean: createTree()
202
+ Clean --> Modified: write/delete/rename
203
+ Modified --> Modified: more changes
204
+ Modified --> Clean: commitChanges()
205
+ Modified --> Clean: rollbackChanges()
206
+ ```
207
+
208
+ **Properties:**
209
+
210
+ - All changes buffered in memory
211
+ - Atomic commit or rollback
212
+ - Path traversal protection
213
+ - Symlink security validation
214
+
215
+ ### 5. Core Utilities (`core/`)
216
+
217
+ Foundation layer providing:
218
+
219
+ | Component | Purpose |
220
+ | ----------- | --------------------------------------- |
221
+ | `fs/` | Safe file system operations |
222
+ | `path/` | Cross-platform path manipulation |
223
+ | `logger.ts` | Scoped logging with secret sanitization |
224
+ | `cache.ts` | In-memory caching with TTL |
225
+ | `errors/` | Structured error creation |
226
+ | `patterns/` | ReDoS-safe glob matching |
227
+ | `encoding/` | File encoding detection |
228
+ | `platform/` | OS detection |
229
+
230
+ ## Caching Strategy
231
+
232
+ ```mermaid
233
+ graph TB
234
+ subgraph "Cache Layers"
235
+ L1[detectAll Cache<br/>TTL: 60s]
236
+ L2[configDetection Cache<br/>TTL: 30s]
237
+ L3[entryPoint Cache<br/>TTL: 60s]
238
+ L4[framework Cache<br/>TTL: 60s]
239
+ end
240
+
241
+ subgraph "Cache Management"
242
+ REG[Cache Registry]
243
+ CLEAR[clearAllCaches]
244
+ end
245
+
246
+ L1 --> REG
247
+ L2 --> REG
248
+ L3 --> REG
249
+ L4 --> REG
250
+ REG --> CLEAR
251
+ ```
252
+
253
+ **Cache Characteristics:**
254
+
255
+ - Function-specific TTLs based on volatility
256
+ - Size limits prevent memory issues
257
+ - Skip-cache option for fresh results
258
+ - Global clear for testing
259
+
260
+ ## Error Handling
261
+
262
+ ```mermaid
263
+ graph LR
264
+ OP[Operation] --> CHECK{Error?}
265
+ CHECK -->|Yes| STRUCT[StructuredError]
266
+ CHECK -->|No| RESULT[Result]
267
+ STRUCT --> CODE[Error Code]
268
+ STRUCT --> CTX[Context Object]
269
+ STRUCT --> MSG[Human Message]
270
+ ```
271
+
272
+ **Error Types:**
273
+
274
+ - `FS_NOT_FOUND` - File/directory not found
275
+ - `FS_READ_ERROR` - Read operation failed
276
+ - `FS_WRITE_ERROR` - Write operation failed
277
+ - `FS_PARSE_ERROR` - JSON/config parse failure
278
+ - `CONFIG_NOT_FOUND` - Configuration not found
279
+ - `VALIDATION_ERROR` - Invalid input
280
+
281
+ ## Security Considerations
282
+
283
+ ### Path Traversal Prevention
284
+
285
+ ```typescript
286
+ // VFS normalizes and validates all paths
287
+ tree.read('../../../etc/passwd') // Throws: Path escapes tree root
288
+ ```
289
+
290
+ ### Symlink Security
291
+
292
+ ```mermaid
293
+ graph LR
294
+ SYMLINK[Symlink] --> CHECK{Target in root?}
295
+ CHECK -->|Yes| ALLOW[Allow operation]
296
+ CHECK -->|No| DENY[Throw error]
297
+ ```
298
+
299
+ ### Secret Sanitization
300
+
301
+ ```typescript
302
+ // Logger automatically redacts sensitive keys
303
+ logger.debug('Config loaded', { apiKey: 'secret123' })
304
+ // Output: [scope] Config loaded {"apiKey":"[REDACTED]"}
305
+ ```
306
+
307
+ Sensitive key patterns: `token`, `key`, `password`, `secret`, `credential`, `auth`, `bearer`, `api_key`, `private`, `passphrase`
308
+
309
+ ### ReDoS Protection
310
+
311
+ Glob matching uses character-by-character iteration instead of regex to prevent Regular Expression Denial of Service attacks.
312
+
313
+ ## Extension Points
314
+
315
+ ### Adding a New Framework Detector
316
+
317
+ ```typescript
318
+ // tech/frontend/my-framework.ts
319
+ import type { FrameworkDetector } from './types'
320
+
321
+ export const myFrameworkDetector: FrameworkDetector = {
322
+ id: 'my-framework',
323
+ name: 'MyFramework',
324
+ category: 'frontend',
325
+ detect(projectPath, packageJson) {
326
+ // Detection logic
327
+ return {
328
+ id: 'my-framework',
329
+ name: 'MyFramework',
330
+ confidence: 80,
331
+ detectedFrom: [{ type: 'package.json', field: 'dependencies.my-framework' }],
332
+ }
333
+ },
334
+ }
335
+
336
+ // Register in tech/frontend/index.ts
337
+ export const frameworkDetectors = [..., myFrameworkDetector]
338
+ ```
339
+
340
+ ### Adding a New CLI Command
341
+
342
+ ```typescript
343
+ // cli/commands/my-command.ts
344
+ import type { Command } from '../types'
345
+
346
+ export const myCommandDef: Command = {
347
+ name: 'my-command',
348
+ description: 'Does something useful',
349
+ execute(args, globalOptions) {
350
+ // Command logic
351
+ return { exitCode: 0 }
352
+ },
353
+ getHelp() {
354
+ return 'Usage: project-scope my-command [options]'
355
+ },
356
+ }
357
+
358
+ // Register in cli/run.ts
359
+ const commands = { ..., 'my-command': myCommandDef }
360
+ ```
361
+
362
+ ## Performance Characteristics
363
+
364
+ | Operation | Typical Time | Caching |
365
+ | ----------------------- | ------------ | ------------- |
366
+ | `analyzeProject` (full) | 50-200ms | Per-component |
367
+ | `detectAll` | 20-50ms | 60s TTL |
368
+ | `detectConfigs` | 10-30ms | 30s TTL |
369
+ | `buildDependencyGraph` | 100-500ms | None |
370
+ | `findFiles` | 10-100ms | None |
package/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
+
5
+ ## 0.1.0 (2026-03-08)
6
+
7
+
8
+ ### Features
9
+
10
+ * **lib-project-scope:** complete implementation ([6075fbd](https://github.com/AndrewRedican/hyperfrontend/commit/6075fbd8a8b3b790715d0985612d07a1fb398020))
package/FUNDING.md ADDED
@@ -0,0 +1,141 @@
1
+ # Funding & Support
2
+
3
+ Thank you for considering supporting hyperfrontend! Your contributions help maintain and improve this project.
4
+
5
+ ## Why Support hyperfrontend?
6
+
7
+ hyperfrontend is an open-source project that provides:
8
+
9
+ - 🔧 Framework-agnostic micro-frontend architecture
10
+ - 📦 Multiple packages and tools for building scalable web applications
11
+ - 📚 Comprehensive documentation and examples
12
+ - 🆓 Free for everyone to use
13
+
14
+ Your support helps:
15
+
16
+ - ⏰ Dedicate more time to development and maintenance
17
+ - 🐛 Fix bugs and address issues faster
18
+ - ✨ Build new features and improvements
19
+ - 📖 Create better documentation and tutorials
20
+ - 🌟 Keep the project sustainable long-term
21
+
22
+ ## How to Support
23
+
24
+ ### 💖 GitHub Sponsors
25
+
26
+ You can sponsor the project through GitHub Sponsors:
27
+
28
+ **[Sponsor @AndrewRedican on GitHub](https://github.com/sponsors/AndrewRedican)**
29
+
30
+ GitHub Sponsors benefits:
31
+
32
+ - Direct support to the maintainer
33
+ - No platform fees (GitHub covers them)
34
+ - Various sponsorship tiers available
35
+ - Recognition in the project
36
+
37
+ ### 🌐 One-time Donations
38
+
39
+ You can also make a one-time contribution:
40
+
41
+ **[Donate via hyperfrontend.dev](https://hyperfrontend.dev/sponsor)**
42
+
43
+ ### 🏢 Corporate Sponsorship
44
+
45
+ If your company uses hyperfrontend in production, consider becoming a corporate sponsor:
46
+
47
+ - **Bronze Sponsor** ($100/month) - Logo in README
48
+ - **Silver Sponsor** ($500/month) - Logo in README + website
49
+ - **Gold Sponsor** ($1000/month) - Logo placement + priority support
50
+ - **Platinum Sponsor** ($2500/month) - All benefits + consulting hours
51
+
52
+ Contact: andrew.redican.mejia@gmail.com
53
+
54
+ ## Other Ways to Contribute
55
+
56
+ Not everyone can contribute financially, and that's okay! There are many other ways to support:
57
+
58
+ ### 💻 Code Contributions
59
+
60
+ - Submit bug fixes
61
+ - Add new features
62
+ - Improve documentation
63
+ - Write tests
64
+
65
+ See our [Contributing Guide](CONTRIBUTING.md) for details.
66
+
67
+ ### 📣 Spread the Word
68
+
69
+ - ⭐ Star the repository on GitHub
70
+ - 🐦 Share on social media
71
+ - 📝 Write blog posts or tutorials
72
+ - 🎤 Give talks about hyperfrontend at meetups/conferences
73
+
74
+ ### 🐛 Bug Reports
75
+
76
+ - Report issues you encounter
77
+ - Help triage existing issues
78
+ - Provide detailed reproduction steps
79
+
80
+ ### 📚 Documentation
81
+
82
+ - Improve existing docs
83
+ - Write tutorials and guides
84
+ - Translate documentation
85
+ - Create video tutorials
86
+
87
+ ### 💬 Community Support
88
+
89
+ - Answer questions in issues
90
+ - Help other users on discussions
91
+ - Share your use cases and examples
92
+
93
+ ## Current Sponsors
94
+
95
+ Thank you to all our sponsors and backers! 🙏
96
+
97
+ <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
98
+
99
+ [![All Contributors](https://img.shields.io/github/all-contributors/AndrewRedican/hyperfrontend?color=ee8449&style=flat-square)](#contributors)
100
+
101
+ <!-- ALL-CONTRIBUTORS-BADGE:END -->
102
+
103
+ ### Corporate Sponsors
104
+
105
+ <!-- Corporate sponsors will be listed here -->
106
+
107
+ _Interested in corporate sponsorship? [Contact us](mailto:andrew.redican.mejia@gmail.com)_
108
+
109
+ ### Individual Sponsors
110
+
111
+ <!-- Sponsors will be automatically listed through GitHub Sponsors -->
112
+
113
+ _Become the first sponsor!_ ❤️
114
+
115
+ ## Recognition
116
+
117
+ All sponsors and contributors are recognized in:
118
+
119
+ - Project README
120
+ - Project website (coming soon)
121
+ - Release notes (for significant contributions)
122
+
123
+ ## Transparency
124
+
125
+ All sponsorship funds are used for:
126
+
127
+ - Development time and effort
128
+ - Infrastructure costs (hosting, CI/CD, domains)
129
+ - Development tools and services
130
+ - Community building and events
131
+
132
+ ## Questions?
133
+
134
+ If you have questions about sponsorship or funding, please contact:
135
+
136
+ **Email**: andrew.redican.mejia@gmail.com
137
+ **GitHub**: [@AndrewRedican](https://github.com/AndrewRedican)
138
+
139
+ ---
140
+
141
+ Thank you for your support! Every contribution, whether code, documentation, or financial, helps make hyperfrontend better for everyone. 🚀
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andrew Redican
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.