@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.
- package/CHANGELOG.md +8 -16
- package/analyze.d.ts.map +1 -1
- package/cli/commands/analyze.d.ts +8 -0
- package/cli/commands/analyze.d.ts.map +1 -1
- package/cli/commands/config.d.ts +7 -0
- package/cli/commands/config.d.ts.map +1 -1
- package/cli/commands/deps.d.ts +6 -0
- package/cli/commands/deps.d.ts.map +1 -1
- package/cli/commands/tree.d.ts +12 -0
- package/cli/commands/tree.d.ts.map +1 -1
- package/cli/index.cjs.js +73 -206
- package/cli/index.cjs.js.map +1 -1
- package/cli/index.esm.js +73 -206
- package/cli/index.esm.js.map +1 -1
- package/cli/run.d.ts.map +1 -1
- package/core/cache.d.ts +1 -0
- package/core/cache.d.ts.map +1 -1
- package/core/encoding/convert.d.ts.map +1 -1
- package/core/encoding/detect.d.ts +5 -0
- package/core/encoding/detect.d.ts.map +1 -1
- package/core/encoding/index.cjs.js +2 -23
- package/core/encoding/index.cjs.js.map +1 -1
- package/core/encoding/index.esm.js +2 -23
- package/core/encoding/index.esm.js.map +1 -1
- package/core/errors/structured-errors.d.ts +2 -0
- package/core/errors/structured-errors.d.ts.map +1 -1
- package/core/fs/directory.d.ts +3 -0
- package/core/fs/directory.d.ts.map +1 -1
- package/core/fs/index.cjs.js +0 -14
- package/core/fs/index.cjs.js.map +1 -1
- package/core/fs/index.esm.js +0 -14
- package/core/fs/index.esm.js.map +1 -1
- package/core/fs/read.d.ts +11 -3
- package/core/fs/read.d.ts.map +1 -1
- package/core/fs/traversal.d.ts.map +1 -1
- package/core/index.cjs.js +6 -62
- package/core/index.cjs.js.map +1 -1
- package/core/index.esm.js +6 -62
- package/core/index.esm.js.map +1 -1
- package/core/logger.d.ts.map +1 -1
- package/core/path/index.cjs.js +0 -1
- package/core/path/index.cjs.js.map +1 -1
- package/core/path/index.esm.js +0 -1
- package/core/path/index.esm.js.map +1 -1
- package/core/path/normalize.d.ts.map +1 -1
- package/core/patterns/glob.d.ts +0 -4
- package/core/patterns/glob.d.ts.map +1 -1
- package/core/platform/detect.d.ts.map +1 -1
- package/core/platform/index.cjs.js +0 -10
- package/core/platform/index.cjs.js.map +1 -1
- package/core/platform/index.esm.js +0 -10
- package/core/platform/index.esm.js.map +1 -1
- package/core/platform/line-endings.d.ts.map +1 -1
- package/heuristics/dependencies/analyze.d.ts.map +1 -1
- package/heuristics/dependencies/index.cjs.js +0 -17
- package/heuristics/dependencies/index.cjs.js.map +1 -1
- package/heuristics/dependencies/index.esm.js +0 -17
- package/heuristics/dependencies/index.esm.js.map +1 -1
- package/heuristics/entry-points/discover.d.ts +34 -7
- package/heuristics/entry-points/discover.d.ts.map +1 -1
- package/heuristics/entry-points/index.cjs.js +6 -34
- package/heuristics/entry-points/index.cjs.js.map +1 -1
- package/heuristics/entry-points/index.esm.js +6 -34
- package/heuristics/entry-points/index.esm.js.map +1 -1
- package/heuristics/framework/index.cjs.js +1 -63
- package/heuristics/framework/index.cjs.js.map +1 -1
- package/heuristics/framework/index.esm.js +1 -63
- package/heuristics/framework/index.esm.js.map +1 -1
- package/heuristics/index.cjs.js +7 -88
- package/heuristics/index.cjs.js.map +1 -1
- package/heuristics/index.esm.js +7 -88
- package/heuristics/index.esm.js.map +1 -1
- package/heuristics/project-type/index.cjs.js +1 -63
- package/heuristics/project-type/index.cjs.js.map +1 -1
- package/heuristics/project-type/index.esm.js +1 -63
- package/heuristics/project-type/index.esm.js.map +1 -1
- package/index.cjs.js +81 -293
- package/index.cjs.js.map +1 -1
- package/index.esm.js +81 -293
- package/index.esm.js.map +1 -1
- package/nx/detect.d.ts.map +1 -1
- package/nx/devkit-loader.d.ts.map +1 -1
- package/nx/index.cjs.js +0 -29
- package/nx/index.cjs.js.map +1 -1
- package/nx/index.esm.js +0 -29
- package/nx/index.esm.js.map +1 -1
- package/nx/project-config.d.ts +2 -0
- package/nx/project-config.d.ts.map +1 -1
- package/package.json +1 -1
- package/project/config/index.cjs.js +4 -46
- package/project/config/index.cjs.js.map +1 -1
- package/project/config/index.esm.js +4 -46
- package/project/config/index.esm.js.map +1 -1
- package/project/config/patterns.d.ts.map +1 -1
- package/project/index.cjs.js +4 -47
- package/project/index.cjs.js.map +1 -1
- package/project/index.esm.js +4 -47
- package/project/index.esm.js.map +1 -1
- package/project/package/index.cjs.js +0 -11
- package/project/package/index.cjs.js.map +1 -1
- package/project/package/index.esm.js +0 -11
- package/project/package/index.esm.js.map +1 -1
- package/project/package/read.d.ts +1 -0
- package/project/package/read.d.ts.map +1 -1
- package/project/root/index.cjs.js +0 -11
- package/project/root/index.cjs.js.map +1 -1
- package/project/root/index.esm.js +0 -11
- package/project/root/index.esm.js.map +1 -1
- package/project/traversal/index.cjs.js +4 -28
- package/project/traversal/index.cjs.js.map +1 -1
- package/project/traversal/index.esm.js +4 -28
- package/project/traversal/index.esm.js.map +1 -1
- package/tech/backend/express.d.ts.map +1 -1
- package/tech/backend/fastify.d.ts.map +1 -1
- package/tech/backend/index.cjs.js +0 -17
- package/tech/backend/index.cjs.js.map +1 -1
- package/tech/backend/index.esm.js +0 -17
- package/tech/backend/index.esm.js.map +1 -1
- package/tech/backend/koa.d.ts.map +1 -1
- package/tech/backend/nestjs.d.ts.map +1 -1
- package/tech/build/index.cjs.js +0 -12
- package/tech/build/index.cjs.js.map +1 -1
- package/tech/build/index.esm.js +0 -12
- package/tech/build/index.esm.js.map +1 -1
- package/tech/frontend/index.cjs.js +0 -16
- package/tech/frontend/index.cjs.js.map +1 -1
- package/tech/frontend/index.esm.js +0 -16
- package/tech/frontend/index.esm.js.map +1 -1
- package/tech/frontend/qwik.d.ts.map +1 -1
- package/tech/frontend/remix.d.ts.map +1 -1
- package/tech/frontend/sveltekit.d.ts.map +1 -1
- package/tech/index.cjs.js +1 -63
- package/tech/index.cjs.js.map +1 -1
- package/tech/index.d.ts.map +1 -1
- package/tech/index.esm.js +1 -63
- package/tech/index.esm.js.map +1 -1
- package/tech/legacy/angularjs.d.ts.map +1 -1
- package/tech/legacy/backbone.d.ts.map +1 -1
- package/tech/legacy/ember.d.ts.map +1 -1
- package/tech/legacy/index.cjs.js +0 -26
- package/tech/legacy/index.cjs.js.map +1 -1
- package/tech/legacy/index.esm.js +0 -26
- package/tech/legacy/index.esm.js.map +1 -1
- package/tech/legacy/jquery.d.ts.map +1 -1
- package/tech/linting/biome.d.ts.map +1 -1
- package/tech/linting/index.cjs.js +0 -14
- package/tech/linting/index.cjs.js.map +1 -1
- package/tech/linting/index.esm.js +0 -14
- package/tech/linting/index.esm.js.map +1 -1
- package/tech/linting/prettier.d.ts.map +1 -1
- package/tech/monorepo/index.cjs.js +1 -13
- package/tech/monorepo/index.cjs.js.map +1 -1
- package/tech/monorepo/index.esm.js +1 -13
- package/tech/monorepo/index.esm.js.map +1 -1
- package/tech/monorepo/types.d.ts +1 -1
- package/tech/monorepo/types.d.ts.map +1 -1
- package/tech/shared-utils/detector-helpers.d.ts.map +1 -1
- package/tech/testing/index.cjs.js +0 -12
- package/tech/testing/index.cjs.js.map +1 -1
- package/tech/testing/index.esm.js +0 -12
- package/tech/testing/index.esm.js.map +1 -1
- package/tech/types/detectors.d.ts.map +1 -1
- package/tech/types/index.cjs.js +0 -27
- package/tech/types/index.cjs.js.map +1 -1
- package/tech/types/index.esm.js +0 -27
- package/tech/types/index.esm.js.map +1 -1
- package/vfs/commit.d.ts.map +1 -1
- package/vfs/diff.d.ts.map +1 -1
- package/vfs/factory.d.ts.map +1 -1
- package/vfs/fs-tree.d.ts.map +1 -1
- package/vfs/index.cjs.js +0 -45
- package/vfs/index.cjs.js.map +1 -1
- package/vfs/index.esm.js +0 -45
- package/vfs/index.esm.js.map +1 -1
- package/vfs/types.d.ts +1 -0
- 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;
|
|
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
|
}
|