@hyperfrontend/project-scope 0.2.0 → 0.2.1

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 (176) hide show
  1. package/CHANGELOG.md +8 -16
  2. package/analyze.d.ts.map +1 -1
  3. package/cli/commands/analyze.d.ts +8 -0
  4. package/cli/commands/analyze.d.ts.map +1 -1
  5. package/cli/commands/config.d.ts +7 -0
  6. package/cli/commands/config.d.ts.map +1 -1
  7. package/cli/commands/deps.d.ts +6 -0
  8. package/cli/commands/deps.d.ts.map +1 -1
  9. package/cli/commands/tree.d.ts +12 -0
  10. package/cli/commands/tree.d.ts.map +1 -1
  11. package/cli/index.cjs.js +73 -206
  12. package/cli/index.cjs.js.map +1 -1
  13. package/cli/index.esm.js +73 -206
  14. package/cli/index.esm.js.map +1 -1
  15. package/cli/run.d.ts.map +1 -1
  16. package/core/cache.d.ts +1 -0
  17. package/core/cache.d.ts.map +1 -1
  18. package/core/encoding/convert.d.ts.map +1 -1
  19. package/core/encoding/detect.d.ts +5 -0
  20. package/core/encoding/detect.d.ts.map +1 -1
  21. package/core/encoding/index.cjs.js +2 -23
  22. package/core/encoding/index.cjs.js.map +1 -1
  23. package/core/encoding/index.esm.js +2 -23
  24. package/core/encoding/index.esm.js.map +1 -1
  25. package/core/errors/structured-errors.d.ts +2 -0
  26. package/core/errors/structured-errors.d.ts.map +1 -1
  27. package/core/fs/directory.d.ts +3 -0
  28. package/core/fs/directory.d.ts.map +1 -1
  29. package/core/fs/index.cjs.js +0 -14
  30. package/core/fs/index.cjs.js.map +1 -1
  31. package/core/fs/index.esm.js +0 -14
  32. package/core/fs/index.esm.js.map +1 -1
  33. package/core/fs/read.d.ts +11 -3
  34. package/core/fs/read.d.ts.map +1 -1
  35. package/core/fs/traversal.d.ts.map +1 -1
  36. package/core/index.cjs.js +6 -62
  37. package/core/index.cjs.js.map +1 -1
  38. package/core/index.esm.js +6 -62
  39. package/core/index.esm.js.map +1 -1
  40. package/core/logger.d.ts.map +1 -1
  41. package/core/path/index.cjs.js +0 -1
  42. package/core/path/index.cjs.js.map +1 -1
  43. package/core/path/index.esm.js +0 -1
  44. package/core/path/index.esm.js.map +1 -1
  45. package/core/path/normalize.d.ts.map +1 -1
  46. package/core/patterns/glob.d.ts +0 -4
  47. package/core/patterns/glob.d.ts.map +1 -1
  48. package/core/platform/detect.d.ts.map +1 -1
  49. package/core/platform/index.cjs.js +0 -10
  50. package/core/platform/index.cjs.js.map +1 -1
  51. package/core/platform/index.esm.js +0 -10
  52. package/core/platform/index.esm.js.map +1 -1
  53. package/core/platform/line-endings.d.ts.map +1 -1
  54. package/heuristics/dependencies/analyze.d.ts.map +1 -1
  55. package/heuristics/dependencies/index.cjs.js +0 -17
  56. package/heuristics/dependencies/index.cjs.js.map +1 -1
  57. package/heuristics/dependencies/index.esm.js +0 -17
  58. package/heuristics/dependencies/index.esm.js.map +1 -1
  59. package/heuristics/entry-points/discover.d.ts +34 -7
  60. package/heuristics/entry-points/discover.d.ts.map +1 -1
  61. package/heuristics/entry-points/index.cjs.js +6 -34
  62. package/heuristics/entry-points/index.cjs.js.map +1 -1
  63. package/heuristics/entry-points/index.esm.js +6 -34
  64. package/heuristics/entry-points/index.esm.js.map +1 -1
  65. package/heuristics/framework/index.cjs.js +1 -63
  66. package/heuristics/framework/index.cjs.js.map +1 -1
  67. package/heuristics/framework/index.esm.js +1 -63
  68. package/heuristics/framework/index.esm.js.map +1 -1
  69. package/heuristics/index.cjs.js +7 -88
  70. package/heuristics/index.cjs.js.map +1 -1
  71. package/heuristics/index.esm.js +7 -88
  72. package/heuristics/index.esm.js.map +1 -1
  73. package/heuristics/project-type/index.cjs.js +1 -63
  74. package/heuristics/project-type/index.cjs.js.map +1 -1
  75. package/heuristics/project-type/index.esm.js +1 -63
  76. package/heuristics/project-type/index.esm.js.map +1 -1
  77. package/index.cjs.js +81 -293
  78. package/index.cjs.js.map +1 -1
  79. package/index.esm.js +81 -293
  80. package/index.esm.js.map +1 -1
  81. package/nx/detect.d.ts.map +1 -1
  82. package/nx/devkit-loader.d.ts.map +1 -1
  83. package/nx/index.cjs.js +0 -29
  84. package/nx/index.cjs.js.map +1 -1
  85. package/nx/index.esm.js +0 -29
  86. package/nx/index.esm.js.map +1 -1
  87. package/nx/project-config.d.ts +2 -0
  88. package/nx/project-config.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/project/config/index.cjs.js +4 -46
  91. package/project/config/index.cjs.js.map +1 -1
  92. package/project/config/index.esm.js +4 -46
  93. package/project/config/index.esm.js.map +1 -1
  94. package/project/config/patterns.d.ts.map +1 -1
  95. package/project/index.cjs.js +4 -47
  96. package/project/index.cjs.js.map +1 -1
  97. package/project/index.esm.js +4 -47
  98. package/project/index.esm.js.map +1 -1
  99. package/project/package/index.cjs.js +0 -11
  100. package/project/package/index.cjs.js.map +1 -1
  101. package/project/package/index.esm.js +0 -11
  102. package/project/package/index.esm.js.map +1 -1
  103. package/project/package/read.d.ts +1 -0
  104. package/project/package/read.d.ts.map +1 -1
  105. package/project/root/index.cjs.js +0 -11
  106. package/project/root/index.cjs.js.map +1 -1
  107. package/project/root/index.esm.js +0 -11
  108. package/project/root/index.esm.js.map +1 -1
  109. package/project/traversal/index.cjs.js +4 -28
  110. package/project/traversal/index.cjs.js.map +1 -1
  111. package/project/traversal/index.esm.js +4 -28
  112. package/project/traversal/index.esm.js.map +1 -1
  113. package/tech/backend/express.d.ts.map +1 -1
  114. package/tech/backend/fastify.d.ts.map +1 -1
  115. package/tech/backend/index.cjs.js +0 -17
  116. package/tech/backend/index.cjs.js.map +1 -1
  117. package/tech/backend/index.esm.js +0 -17
  118. package/tech/backend/index.esm.js.map +1 -1
  119. package/tech/backend/koa.d.ts.map +1 -1
  120. package/tech/backend/nestjs.d.ts.map +1 -1
  121. package/tech/build/index.cjs.js +0 -12
  122. package/tech/build/index.cjs.js.map +1 -1
  123. package/tech/build/index.esm.js +0 -12
  124. package/tech/build/index.esm.js.map +1 -1
  125. package/tech/frontend/index.cjs.js +0 -16
  126. package/tech/frontend/index.cjs.js.map +1 -1
  127. package/tech/frontend/index.esm.js +0 -16
  128. package/tech/frontend/index.esm.js.map +1 -1
  129. package/tech/frontend/qwik.d.ts.map +1 -1
  130. package/tech/frontend/remix.d.ts.map +1 -1
  131. package/tech/frontend/sveltekit.d.ts.map +1 -1
  132. package/tech/index.cjs.js +1 -63
  133. package/tech/index.cjs.js.map +1 -1
  134. package/tech/index.d.ts.map +1 -1
  135. package/tech/index.esm.js +1 -63
  136. package/tech/index.esm.js.map +1 -1
  137. package/tech/legacy/angularjs.d.ts.map +1 -1
  138. package/tech/legacy/backbone.d.ts.map +1 -1
  139. package/tech/legacy/ember.d.ts.map +1 -1
  140. package/tech/legacy/index.cjs.js +0 -26
  141. package/tech/legacy/index.cjs.js.map +1 -1
  142. package/tech/legacy/index.esm.js +0 -26
  143. package/tech/legacy/index.esm.js.map +1 -1
  144. package/tech/legacy/jquery.d.ts.map +1 -1
  145. package/tech/linting/biome.d.ts.map +1 -1
  146. package/tech/linting/index.cjs.js +0 -14
  147. package/tech/linting/index.cjs.js.map +1 -1
  148. package/tech/linting/index.esm.js +0 -14
  149. package/tech/linting/index.esm.js.map +1 -1
  150. package/tech/linting/prettier.d.ts.map +1 -1
  151. package/tech/monorepo/index.cjs.js +1 -13
  152. package/tech/monorepo/index.cjs.js.map +1 -1
  153. package/tech/monorepo/index.esm.js +1 -13
  154. package/tech/monorepo/index.esm.js.map +1 -1
  155. package/tech/monorepo/types.d.ts +1 -1
  156. package/tech/monorepo/types.d.ts.map +1 -1
  157. package/tech/shared-utils/detector-helpers.d.ts.map +1 -1
  158. package/tech/testing/index.cjs.js +0 -12
  159. package/tech/testing/index.cjs.js.map +1 -1
  160. package/tech/testing/index.esm.js +0 -12
  161. package/tech/testing/index.esm.js.map +1 -1
  162. package/tech/types/detectors.d.ts.map +1 -1
  163. package/tech/types/index.cjs.js +0 -27
  164. package/tech/types/index.cjs.js.map +1 -1
  165. package/tech/types/index.esm.js +0 -27
  166. package/tech/types/index.esm.js.map +1 -1
  167. package/vfs/commit.d.ts.map +1 -1
  168. package/vfs/diff.d.ts.map +1 -1
  169. package/vfs/factory.d.ts.map +1 -1
  170. package/vfs/fs-tree.d.ts.map +1 -1
  171. package/vfs/index.cjs.js +0 -45
  172. package/vfs/index.cjs.js.map +1 -1
  173. package/vfs/index.esm.js +0 -45
  174. package/vfs/index.esm.js.map +1 -1
  175. package/vfs/types.d.ts +1 -0
  176. package/vfs/types.d.ts.map +1 -1
package/tech/index.esm.js CHANGED
@@ -12,7 +12,6 @@ import { existsSync, readFileSync, statSync, lstatSync, readdirSync } from 'node
12
12
  *
13
13
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/map
14
14
  */
15
- // Capture references at module initialization time
16
15
  const _Map = globalThis.Map;
17
16
  const _Reflect$2 = globalThis.Reflect;
18
17
  /**
@@ -32,7 +31,6 @@ const createMap = (iterable) => _Reflect$2.construct(_Map, iterable ? [iterable]
32
31
  *
33
32
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/object
34
33
  */
35
- // Capture references at module initialization time
36
34
  const _Object = globalThis.Object;
37
35
  /**
38
36
  * (Safe copy) Prevents modification of existing property attributes and values,
@@ -67,7 +65,6 @@ const defineProperties = _Object.defineProperties;
67
65
  *
68
66
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/set
69
67
  */
70
- // Capture references at module initialization time
71
68
  const _Set = globalThis.Set;
72
69
  const _Reflect$1 = globalThis.Reflect;
73
70
  /**
@@ -117,7 +114,6 @@ const cacheRegistry = createSet();
117
114
  function createCache(options) {
118
115
  const { ttl, maxSize } = options ?? {};
119
116
  const store = createMap();
120
- // Track insertion order for FIFO eviction
121
117
  const insertionOrder = [];
122
118
  /**
123
119
  * Check if an entry is expired.
@@ -168,12 +164,10 @@ function createCache(options) {
168
164
  return entry.value;
169
165
  },
170
166
  set(key, value) {
171
- // If key exists, remove from order first
172
167
  if (store.has(key)) {
173
168
  removeFromOrder(key);
174
169
  }
175
170
  else {
176
- // Evict if needed before adding new entry
177
171
  evictIfNeeded();
178
172
  }
179
173
  // eslint-disable-next-line workspace/no-unsafe-builtin-methods -- Date.now() is needed for Jest fake timers compatibility
@@ -206,7 +200,6 @@ function createCache(options) {
206
200
  return [...insertionOrder];
207
201
  },
208
202
  };
209
- // Register cache for global operations
210
203
  cacheRegistry.add(cache);
211
204
  return freeze(cache);
212
205
  }
@@ -219,7 +212,6 @@ function createCache(options) {
219
212
  *
220
213
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/array
221
214
  */
222
- // Capture references at module initialization time
223
215
  const _Array = globalThis.Array;
224
216
  /**
225
217
  * (Safe copy) Determines whether the passed value is an Array.
@@ -234,7 +226,6 @@ const isArray = _Array.isArray;
234
226
  *
235
227
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/console
236
228
  */
237
- // Capture references at module initialization time
238
229
  const _console = globalThis.console;
239
230
  /**
240
231
  * (Safe copy) Outputs a message to the console.
@@ -317,7 +308,6 @@ _console.timeLog.bind(_console);
317
308
  *
318
309
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/json
319
310
  */
320
- // Capture references at module initialization time
321
311
  const _JSON = globalThis.JSON;
322
312
  /**
323
313
  * (Safe copy) Converts a JavaScript Object Notation (JSON) string into an object.
@@ -364,7 +354,6 @@ const getType = (target) => {
364
354
  *
365
355
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/error
366
356
  */
367
- // Capture references at module initialization time
368
357
  const _Error = globalThis.Error;
369
358
  const _Reflect = globalThis.Reflect;
370
359
  /**
@@ -385,7 +374,6 @@ const createError = (message, options) => _Reflect.construct(_Error, [message, o
385
374
  *
386
375
  * @module @hyperfrontend/immutable-api-utils/built-in-copy/math
387
376
  */
388
- // Capture references at module initialization time
389
377
  const _Math = globalThis.Math;
390
378
  /**
391
379
  * (Safe copy) Returns the smaller of zero or more numbers.
@@ -658,14 +646,11 @@ function formatMessage(namespace, message, meta) {
658
646
  */
659
647
  function createScopedLogger(namespace, options = {}) {
660
648
  const { level = 'error', sanitizeSecrets = true } = options;
661
- // Create wrapper functions that add namespace prefix and sanitization
662
649
  const createLogFn = (baseFn) => (message, meta) => {
663
650
  const processedMeta = sanitizeSecrets && meta ? sanitize(meta) : meta;
664
651
  baseFn(formatMessage(namespace, message, processedMeta));
665
652
  };
666
- // Create base logger with wrapped functions
667
653
  const baseLogger = createLogger(createLogFn(error), createLogFn(warn), createLogFn(log), createLogFn(info), createLogFn(debug));
668
- // Set initial log level (use global override if set)
669
654
  baseLogger.setLogLevel(level);
670
655
  const scopedLogger = freeze({
671
656
  error: (message, meta) => baseLogger.error(message, meta),
@@ -676,7 +661,6 @@ function createScopedLogger(namespace, options = {}) {
676
661
  setLogLevel: baseLogger.setLogLevel,
677
662
  getLogLevel: baseLogger.getLogLevel,
678
663
  });
679
- // Register logger for global level management
680
664
  loggerRegistry.add(scopedLogger);
681
665
  return scopedLogger;
682
666
  }
@@ -956,7 +940,6 @@ function collectAllDependencies(packageJson) {
956
940
  function parseVersionString(versionString) {
957
941
  if (versionString === undefined || versionString === null)
958
942
  return undefined;
959
- // Manual parsing instead of regex to avoid ReDoS
960
943
  let start = 0;
961
944
  while (start < versionString.length) {
962
945
  const char = versionString[start];
@@ -1017,7 +1000,6 @@ function expressDetector(projectPath, packageJson) {
1017
1000
  version = parseVersionString(deps['express']);
1018
1001
  sources.push({ type: 'package.json', field: 'dependencies.express' });
1019
1002
  }
1020
- // @types/express (indicates usage)
1021
1003
  if (deps['@types/express']) {
1022
1004
  confidence += 10;
1023
1005
  sources.push({ type: 'package.json', field: 'dependencies.@types/express' });
@@ -1053,13 +1035,11 @@ function nestDetector(projectPath, packageJson) {
1053
1035
  let version;
1054
1036
  let configPath;
1055
1037
  const deps = collectAllDependencies(pkg);
1056
- // @nestjs/core package
1057
1038
  if (deps['@nestjs/core']) {
1058
1039
  confidence += 70;
1059
1040
  version = parseVersionString(deps['@nestjs/core']);
1060
1041
  sources.push({ type: 'package.json', field: 'dependencies.@nestjs/core' });
1061
1042
  }
1062
- // @nestjs/common
1063
1043
  if (deps['@nestjs/common']) {
1064
1044
  confidence += 15;
1065
1045
  sources.push({ type: 'package.json', field: 'dependencies.@nestjs/common' });
@@ -1110,7 +1090,6 @@ function fastifyDetector(projectPath, packageJson) {
1110
1090
  confidence += 15;
1111
1091
  sources.push({ type: 'package.json', field: 'dependencies (fastify plugins)' });
1112
1092
  }
1113
- // @types/fastify (older versions)
1114
1093
  if (deps['@types/fastify']) {
1115
1094
  confidence += 5;
1116
1095
  sources.push({ type: 'package.json', field: 'dependencies.@types/fastify' });
@@ -1145,7 +1124,6 @@ function koaDetector(projectPath, packageJson) {
1145
1124
  version = parseVersionString(deps['koa']);
1146
1125
  sources.push({ type: 'package.json', field: 'dependencies.koa' });
1147
1126
  }
1148
- // @types/koa
1149
1127
  if (deps['@types/koa']) {
1150
1128
  confidence += 10;
1151
1129
  sources.push({ type: 'package.json', field: 'dependencies.@types/koa' });
@@ -1724,7 +1702,6 @@ function remixDetector(projectPath, packageJson) {
1724
1702
  let confidence = 0;
1725
1703
  let version;
1726
1704
  const deps = collectAllDependencies(pkg);
1727
- // @remix-run packages
1728
1705
  if (deps['@remix-run/react']) {
1729
1706
  confidence += 70;
1730
1707
  version = parseVersionString(deps['@remix-run/react']);
@@ -2000,7 +1977,6 @@ function sveltekitDetector(projectPath, packageJson) {
2000
1977
  let confidence = 0;
2001
1978
  let version;
2002
1979
  const deps = collectAllDependencies(pkg);
2003
- // @sveltejs/kit package
2004
1980
  if (deps['@sveltejs/kit']) {
2005
1981
  confidence += 70;
2006
1982
  version = parseVersionString(deps['@sveltejs/kit']);
@@ -2079,13 +2055,11 @@ function qwikDetector(projectPath, packageJson) {
2079
2055
  let confidence = 0;
2080
2056
  let version;
2081
2057
  const deps = collectAllDependencies(pkg);
2082
- // @builder.io/qwik package
2083
2058
  if (deps['@builder.io/qwik']) {
2084
2059
  confidence += 70;
2085
2060
  version = parseVersionString(deps['@builder.io/qwik']);
2086
2061
  sources.push({ type: 'package.json', field: 'dependencies.@builder.io/qwik' });
2087
2062
  }
2088
- // @builder.io/qwik-city
2089
2063
  if (deps['@builder.io/qwik-city']) {
2090
2064
  confidence += 20;
2091
2065
  sources.push({ type: 'package.json', field: 'dependencies.@builder.io/qwik-city' });
@@ -2196,23 +2170,19 @@ function angularJSDetector(projectPath, packageJson) {
2196
2170
  let confidence = 0;
2197
2171
  let version;
2198
2172
  const deps = collectAllDependencies(pkg);
2199
- // AngularJS package (angular, not @angular/core)
2200
2173
  if (deps['angular']) {
2201
2174
  confidence += 70;
2202
2175
  version = parseVersionString(deps['angular']);
2203
2176
  sources.push({ type: 'package.json', field: 'dependencies.angular' });
2204
2177
  }
2205
- // AngularJS router
2206
2178
  if (deps['angular-route']) {
2207
2179
  confidence += 15;
2208
2180
  sources.push({ type: 'package.json', field: 'dependencies.angular-route' });
2209
2181
  }
2210
- // AngularJS resource
2211
2182
  if (deps['angular-resource']) {
2212
2183
  confidence += 10;
2213
2184
  sources.push({ type: 'package.json', field: 'dependencies.angular-resource' });
2214
2185
  }
2215
- // AngularJS animate
2216
2186
  if (deps['angular-animate']) {
2217
2187
  confidence += 5;
2218
2188
  sources.push({ type: 'package.json', field: 'dependencies.angular-animate' });
@@ -2243,23 +2213,19 @@ function backboneDetector(projectPath, packageJson) {
2243
2213
  let confidence = 0;
2244
2214
  let version;
2245
2215
  const deps = collectAllDependencies(pkg);
2246
- // Backbone package
2247
2216
  if (deps['backbone']) {
2248
2217
  confidence += 70;
2249
2218
  version = parseVersionString(deps['backbone']);
2250
2219
  sources.push({ type: 'package.json', field: 'dependencies.backbone' });
2251
- // Underscore (commonly used with Backbone)
2252
2220
  if (deps['underscore']) {
2253
2221
  confidence += 15;
2254
2222
  sources.push({ type: 'package.json', field: 'dependencies.underscore' });
2255
2223
  }
2256
- // Lodash can be used as underscore replacement
2257
2224
  if (deps['lodash']) {
2258
2225
  confidence += 5;
2259
2226
  sources.push({ type: 'package.json', field: 'dependencies.lodash' });
2260
2227
  }
2261
2228
  }
2262
- // Marionette (Backbone framework)
2263
2229
  if (deps['backbone.marionette'] || deps['marionette']) {
2264
2230
  confidence += 10;
2265
2231
  sources.push({ type: 'package.json', field: 'dependencies.backbone.marionette' });
@@ -2290,18 +2256,15 @@ function emberDetector(projectPath, packageJson) {
2290
2256
  let confidence = 0;
2291
2257
  let version;
2292
2258
  const deps = collectAllDependencies(pkg);
2293
- // Ember source package
2294
2259
  if (deps['ember-source']) {
2295
2260
  confidence += 70;
2296
2261
  version = parseVersionString(deps['ember-source']);
2297
2262
  sources.push({ type: 'package.json', field: 'dependencies.ember-source' });
2298
2263
  }
2299
- // Ember CLI
2300
2264
  if (deps['ember-cli']) {
2301
2265
  confidence += 20;
2302
2266
  sources.push({ type: 'package.json', field: 'devDependencies.ember-cli' });
2303
2267
  }
2304
- // Ember Data
2305
2268
  if (deps['ember-data']) {
2306
2269
  confidence += 10;
2307
2270
  sources.push({ type: 'package.json', field: 'dependencies.ember-data' });
@@ -2332,18 +2295,15 @@ function jqueryDetector(projectPath, packageJson) {
2332
2295
  let confidence = 0;
2333
2296
  let version;
2334
2297
  const deps = collectAllDependencies(pkg);
2335
- // jQuery package
2336
2298
  if (deps['jquery']) {
2337
2299
  confidence += 80;
2338
2300
  version = parseVersionString(deps['jquery']);
2339
2301
  sources.push({ type: 'package.json', field: 'dependencies.jquery' });
2340
2302
  }
2341
- // jQuery UI
2342
2303
  if (deps['jquery-ui']) {
2343
2304
  confidence += 10;
2344
2305
  sources.push({ type: 'package.json', field: 'dependencies.jquery-ui' });
2345
2306
  }
2346
- // jQuery plugins
2347
2307
  if (deps['jquery-validation']) {
2348
2308
  confidence += 5;
2349
2309
  sources.push({ type: 'package.json', field: 'dependencies.jquery-validation' });
@@ -2490,7 +2450,6 @@ function prettierDetector(projectPath, packageJson) {
2490
2450
  confidence += 30;
2491
2451
  sources.push({ type: 'package.json', field: 'prettier' });
2492
2452
  }
2493
- // .prettierignore file
2494
2453
  if (exists(join$1(projectPath, '.prettierignore'))) {
2495
2454
  confidence += 10;
2496
2455
  sources.push({ type: 'config-file', path: '.prettierignore' });
@@ -2585,7 +2544,6 @@ function biomeDetector(projectPath, packageJson) {
2585
2544
  let configPath;
2586
2545
  let version;
2587
2546
  const deps = collectAllDependencies(pkg);
2588
- // @biomejs/biome package
2589
2547
  if (deps['@biomejs/biome']) {
2590
2548
  confidence += 70;
2591
2549
  version = parseVersionString(deps['@biomejs/biome']);
@@ -2872,7 +2830,7 @@ function npmWorkspacesDetector(workspacePath, packageJson) {
2872
2830
  sources.push({ type: 'lockfile', path: 'package-lock.json' });
2873
2831
  }
2874
2832
  if (exists(join$1(workspacePath, 'yarn.lock'))) {
2875
- return null; // Let yarn workspace detector handle this
2833
+ return null;
2876
2834
  }
2877
2835
  if (confidence === 0) {
2878
2836
  return null;
@@ -3251,7 +3209,6 @@ function checkTsConfigStrict(projectPath) {
3251
3209
  if (!content)
3252
3210
  return undefined;
3253
3211
  try {
3254
- // Simple JSON parsing - doesn't handle comments but good enough for strict check
3255
3212
  const cleanContent = content.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, '');
3256
3213
  const parsed = parse(cleanContent);
3257
3214
  return parsed?.compilerOptions?.strict === true;
@@ -3274,19 +3231,16 @@ function typescriptDetector(projectPath, packageJson) {
3274
3231
  let configPath;
3275
3232
  let version;
3276
3233
  const deps = collectAllDependencies(pkg);
3277
- // TypeScript package
3278
3234
  if (deps['typescript']) {
3279
3235
  confidence += 50;
3280
3236
  version = parseVersionString(deps['typescript']);
3281
3237
  sources.push({ type: 'package.json', field: 'dependencies.typescript' });
3282
3238
  }
3283
- // tsconfig.json
3284
3239
  if (exists(join$1(projectPath, 'tsconfig.json'))) {
3285
3240
  confidence += 40;
3286
3241
  configPath = 'tsconfig.json';
3287
3242
  sources.push({ type: 'config-file', path: 'tsconfig.json' });
3288
3243
  }
3289
- // tsconfig.*.json variants
3290
3244
  const tsconfigVariants = ['tsconfig.build.json', 'tsconfig.lib.json', 'tsconfig.spec.json', 'tsconfig.app.json'];
3291
3245
  for (const variant of tsconfigVariants) {
3292
3246
  if (exists(join$1(projectPath, variant))) {
@@ -3295,7 +3249,6 @@ function typescriptDetector(projectPath, packageJson) {
3295
3249
  break;
3296
3250
  }
3297
3251
  }
3298
- // @types packages
3299
3252
  const typePackages = keys(deps).filter((d) => d.startsWith('@types/'));
3300
3253
  if (typePackages.length > 0) {
3301
3254
  confidence += 10;
@@ -3329,24 +3282,20 @@ function flowDetector(projectPath, packageJson) {
3329
3282
  let configPath;
3330
3283
  let version;
3331
3284
  const deps = collectAllDependencies(pkg);
3332
- // flow-bin package
3333
3285
  if (deps['flow-bin']) {
3334
3286
  confidence += 60;
3335
3287
  version = parseVersionString(deps['flow-bin']);
3336
3288
  sources.push({ type: 'package.json', field: 'dependencies.flow-bin' });
3337
3289
  }
3338
- // .flowconfig
3339
3290
  if (exists(join$1(projectPath, '.flowconfig'))) {
3340
3291
  confidence += 40;
3341
3292
  configPath = '.flowconfig';
3342
3293
  sources.push({ type: 'config-file', path: '.flowconfig' });
3343
3294
  }
3344
- // flow-typed directory
3345
3295
  if (exists(join$1(projectPath, 'flow-typed'))) {
3346
3296
  confidence += 10;
3347
3297
  sources.push({ type: 'directory', path: 'flow-typed/' });
3348
3298
  }
3349
- // @babel/preset-flow
3350
3299
  if (deps['@babel/preset-flow']) {
3351
3300
  confidence += 10;
3352
3301
  sources.push({ type: 'package.json', field: 'dependencies.@babel/preset-flow' });
@@ -3370,7 +3319,6 @@ function flowDetector(projectPath, packageJson) {
3370
3319
  * @returns `true` if the content contains JSDoc type annotations.
3371
3320
  */
3372
3321
  function hasJsDocTypes(content) {
3373
- // Check for JSDoc type annotations
3374
3322
  return (content.includes('@type {') ||
3375
3323
  content.includes('@param {') ||
3376
3324
  content.includes('@returns {') ||
@@ -3389,14 +3337,11 @@ function jsdocDetector(projectPath, packageJson) {
3389
3337
  const sources = [];
3390
3338
  let confidence = 0;
3391
3339
  const deps = collectAllDependencies(pkg);
3392
- // jsdoc package
3393
3340
  if (deps['jsdoc']) {
3394
3341
  confidence += 30;
3395
3342
  sources.push({ type: 'package.json', field: 'dependencies.jsdoc' });
3396
3343
  }
3397
- // typescript with checkJs (JSDoc type checking)
3398
3344
  if (deps['typescript']) {
3399
- // Check if checkJs is enabled in tsconfig
3400
3345
  const tsconfigPath = join$1(projectPath, 'tsconfig.json');
3401
3346
  const content = readFileIfExists(tsconfigPath);
3402
3347
  if (content) {
@@ -3413,12 +3358,10 @@ function jsdocDetector(projectPath, packageJson) {
3413
3358
  }
3414
3359
  }
3415
3360
  }
3416
- // Check for jsconfig.json (VS Code JS type checking)
3417
3361
  if (exists(join$1(projectPath, 'jsconfig.json'))) {
3418
3362
  confidence += 40;
3419
3363
  sources.push({ type: 'config-file', path: 'jsconfig.json' });
3420
3364
  }
3421
- // Sample check for JSDoc annotations in source files
3422
3365
  const srcDir = join$1(projectPath, 'src');
3423
3366
  if (exists(srcDir)) {
3424
3367
  try {
@@ -3500,8 +3443,6 @@ const allDetectors = {
3500
3443
  function isDetectAllOptions(value) {
3501
3444
  if (typeof value !== 'object' || value === null)
3502
3445
  return false;
3503
- // DetectAllOptions has skipCache or packageJson fields specifically
3504
- // PackageJson never has skipCache field
3505
3446
  return 'skipCache' in value || 'packageJson' in value;
3506
3447
  }
3507
3448
  /**
@@ -3533,9 +3474,7 @@ function isDetectAllOptions(value) {
3533
3474
  * ```
3534
3475
  */
3535
3476
  function detectAll(projectPath, packageJsonOrOptions) {
3536
- // Handle backward-compatible arguments
3537
3477
  const options = isDetectAllOptions(packageJsonOrOptions) ? packageJsonOrOptions : { packageJson: packageJsonOrOptions };
3538
- // Check cache first (unless skipCache is true)
3539
3478
  if (!options.skipCache) {
3540
3479
  const cached = detectAllCache.get(projectPath);
3541
3480
  if (cached) {
@@ -3586,7 +3525,6 @@ function detectAll(projectPath, packageJsonOrOptions) {
3586
3525
  legacyFrameworks: result.legacyFrameworks.map((f) => f.id),
3587
3526
  testingFrameworks: result.testingFrameworks.map((f) => f.id),
3588
3527
  });
3589
- // Cache the result
3590
3528
  detectAllCache.set(projectPath, result);
3591
3529
  return result;
3592
3530
  }