@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
|
@@ -14,7 +14,6 @@ var node_fs = require('node:fs');
|
|
|
14
14
|
*
|
|
15
15
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/map
|
|
16
16
|
*/
|
|
17
|
-
// Capture references at module initialization time
|
|
18
17
|
const _Map = globalThis.Map;
|
|
19
18
|
const _Reflect$2 = globalThis.Reflect;
|
|
20
19
|
/**
|
|
@@ -34,7 +33,6 @@ const createMap = (iterable) => _Reflect$2.construct(_Map, iterable ? [iterable]
|
|
|
34
33
|
*
|
|
35
34
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/object
|
|
36
35
|
*/
|
|
37
|
-
// Capture references at module initialization time
|
|
38
36
|
const _Object = globalThis.Object;
|
|
39
37
|
/**
|
|
40
38
|
* (Safe copy) Prevents modification of existing property attributes and values,
|
|
@@ -69,7 +67,6 @@ const defineProperties = _Object.defineProperties;
|
|
|
69
67
|
*
|
|
70
68
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/set
|
|
71
69
|
*/
|
|
72
|
-
// Capture references at module initialization time
|
|
73
70
|
const _Set = globalThis.Set;
|
|
74
71
|
const _Reflect$1 = globalThis.Reflect;
|
|
75
72
|
/**
|
|
@@ -119,7 +116,6 @@ const cacheRegistry = createSet();
|
|
|
119
116
|
function createCache(options) {
|
|
120
117
|
const { ttl, maxSize } = options ?? {};
|
|
121
118
|
const store = createMap();
|
|
122
|
-
// Track insertion order for FIFO eviction
|
|
123
119
|
const insertionOrder = [];
|
|
124
120
|
/**
|
|
125
121
|
* Check if an entry is expired.
|
|
@@ -170,12 +166,10 @@ function createCache(options) {
|
|
|
170
166
|
return entry.value;
|
|
171
167
|
},
|
|
172
168
|
set(key, value) {
|
|
173
|
-
// If key exists, remove from order first
|
|
174
169
|
if (store.has(key)) {
|
|
175
170
|
removeFromOrder(key);
|
|
176
171
|
}
|
|
177
172
|
else {
|
|
178
|
-
// Evict if needed before adding new entry
|
|
179
173
|
evictIfNeeded();
|
|
180
174
|
}
|
|
181
175
|
// eslint-disable-next-line workspace/no-unsafe-builtin-methods -- Date.now() is needed for Jest fake timers compatibility
|
|
@@ -208,7 +202,6 @@ function createCache(options) {
|
|
|
208
202
|
return [...insertionOrder];
|
|
209
203
|
},
|
|
210
204
|
};
|
|
211
|
-
// Register cache for global operations
|
|
212
205
|
cacheRegistry.add(cache);
|
|
213
206
|
return freeze(cache);
|
|
214
207
|
}
|
|
@@ -221,7 +214,6 @@ function createCache(options) {
|
|
|
221
214
|
*
|
|
222
215
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/array
|
|
223
216
|
*/
|
|
224
|
-
// Capture references at module initialization time
|
|
225
217
|
const _Array = globalThis.Array;
|
|
226
218
|
/**
|
|
227
219
|
* (Safe copy) Determines whether the passed value is an Array.
|
|
@@ -236,7 +228,6 @@ const isArray = _Array.isArray;
|
|
|
236
228
|
*
|
|
237
229
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/console
|
|
238
230
|
*/
|
|
239
|
-
// Capture references at module initialization time
|
|
240
231
|
const _console = globalThis.console;
|
|
241
232
|
/**
|
|
242
233
|
* (Safe copy) Outputs a message to the console.
|
|
@@ -319,7 +310,6 @@ _console.timeLog.bind(_console);
|
|
|
319
310
|
*
|
|
320
311
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/json
|
|
321
312
|
*/
|
|
322
|
-
// Capture references at module initialization time
|
|
323
313
|
const _JSON = globalThis.JSON;
|
|
324
314
|
/**
|
|
325
315
|
* (Safe copy) Converts a JavaScript Object Notation (JSON) string into an object.
|
|
@@ -366,7 +356,6 @@ const getType = (target) => {
|
|
|
366
356
|
*
|
|
367
357
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/error
|
|
368
358
|
*/
|
|
369
|
-
// Capture references at module initialization time
|
|
370
359
|
const _Error = globalThis.Error;
|
|
371
360
|
const _Reflect = globalThis.Reflect;
|
|
372
361
|
/**
|
|
@@ -387,7 +376,6 @@ const createError = (message, options) => _Reflect.construct(_Error, [message, o
|
|
|
387
376
|
*
|
|
388
377
|
* @module @hyperfrontend/immutable-api-utils/built-in-copy/math
|
|
389
378
|
*/
|
|
390
|
-
// Capture references at module initialization time
|
|
391
379
|
const _Math = globalThis.Math;
|
|
392
380
|
/**
|
|
393
381
|
* (Safe copy) Returns the smaller of zero or more numbers.
|
|
@@ -660,14 +648,11 @@ function formatMessage(namespace, message, meta) {
|
|
|
660
648
|
*/
|
|
661
649
|
function createScopedLogger(namespace, options = {}) {
|
|
662
650
|
const { level = 'error', sanitizeSecrets = true } = options;
|
|
663
|
-
// Create wrapper functions that add namespace prefix and sanitization
|
|
664
651
|
const createLogFn = (baseFn) => (message, meta) => {
|
|
665
652
|
const processedMeta = sanitizeSecrets && meta ? sanitize(meta) : meta;
|
|
666
653
|
baseFn(formatMessage(namespace, message, processedMeta));
|
|
667
654
|
};
|
|
668
|
-
// Create base logger with wrapped functions
|
|
669
655
|
const baseLogger = createLogger(createLogFn(error), createLogFn(warn), createLogFn(log), createLogFn(info), createLogFn(debug));
|
|
670
|
-
// Set initial log level (use global override if set)
|
|
671
656
|
baseLogger.setLogLevel(level);
|
|
672
657
|
const scopedLogger = freeze({
|
|
673
658
|
error: (message, meta) => baseLogger.error(message, meta),
|
|
@@ -678,7 +663,6 @@ function createScopedLogger(namespace, options = {}) {
|
|
|
678
663
|
setLogLevel: baseLogger.setLogLevel,
|
|
679
664
|
getLogLevel: baseLogger.getLogLevel,
|
|
680
665
|
});
|
|
681
|
-
// Register logger for global level management
|
|
682
666
|
loggerRegistry.add(scopedLogger);
|
|
683
667
|
return scopedLogger;
|
|
684
668
|
}
|
|
@@ -958,7 +942,6 @@ function collectAllDependencies(packageJson) {
|
|
|
958
942
|
function parseVersionString(versionString) {
|
|
959
943
|
if (versionString === undefined || versionString === null)
|
|
960
944
|
return undefined;
|
|
961
|
-
// Manual parsing instead of regex to avoid ReDoS
|
|
962
945
|
let start = 0;
|
|
963
946
|
while (start < versionString.length) {
|
|
964
947
|
const char = versionString[start];
|
|
@@ -1019,7 +1002,6 @@ function expressDetector(projectPath, packageJson) {
|
|
|
1019
1002
|
version = parseVersionString(deps['express']);
|
|
1020
1003
|
sources.push({ type: 'package.json', field: 'dependencies.express' });
|
|
1021
1004
|
}
|
|
1022
|
-
// @types/express (indicates usage)
|
|
1023
1005
|
if (deps['@types/express']) {
|
|
1024
1006
|
confidence += 10;
|
|
1025
1007
|
sources.push({ type: 'package.json', field: 'dependencies.@types/express' });
|
|
@@ -1055,13 +1037,11 @@ function nestDetector(projectPath, packageJson) {
|
|
|
1055
1037
|
let version;
|
|
1056
1038
|
let configPath;
|
|
1057
1039
|
const deps = collectAllDependencies(pkg);
|
|
1058
|
-
// @nestjs/core package
|
|
1059
1040
|
if (deps['@nestjs/core']) {
|
|
1060
1041
|
confidence += 70;
|
|
1061
1042
|
version = parseVersionString(deps['@nestjs/core']);
|
|
1062
1043
|
sources.push({ type: 'package.json', field: 'dependencies.@nestjs/core' });
|
|
1063
1044
|
}
|
|
1064
|
-
// @nestjs/common
|
|
1065
1045
|
if (deps['@nestjs/common']) {
|
|
1066
1046
|
confidence += 15;
|
|
1067
1047
|
sources.push({ type: 'package.json', field: 'dependencies.@nestjs/common' });
|
|
@@ -1112,7 +1092,6 @@ function fastifyDetector(projectPath, packageJson) {
|
|
|
1112
1092
|
confidence += 15;
|
|
1113
1093
|
sources.push({ type: 'package.json', field: 'dependencies (fastify plugins)' });
|
|
1114
1094
|
}
|
|
1115
|
-
// @types/fastify (older versions)
|
|
1116
1095
|
if (deps['@types/fastify']) {
|
|
1117
1096
|
confidence += 5;
|
|
1118
1097
|
sources.push({ type: 'package.json', field: 'dependencies.@types/fastify' });
|
|
@@ -1147,7 +1126,6 @@ function koaDetector(projectPath, packageJson) {
|
|
|
1147
1126
|
version = parseVersionString(deps['koa']);
|
|
1148
1127
|
sources.push({ type: 'package.json', field: 'dependencies.koa' });
|
|
1149
1128
|
}
|
|
1150
|
-
// @types/koa
|
|
1151
1129
|
if (deps['@types/koa']) {
|
|
1152
1130
|
confidence += 10;
|
|
1153
1131
|
sources.push({ type: 'package.json', field: 'dependencies.@types/koa' });
|
|
@@ -1690,7 +1668,6 @@ function remixDetector(projectPath, packageJson) {
|
|
|
1690
1668
|
let confidence = 0;
|
|
1691
1669
|
let version;
|
|
1692
1670
|
const deps = collectAllDependencies(pkg);
|
|
1693
|
-
// @remix-run packages
|
|
1694
1671
|
if (deps['@remix-run/react']) {
|
|
1695
1672
|
confidence += 70;
|
|
1696
1673
|
version = parseVersionString(deps['@remix-run/react']);
|
|
@@ -1966,7 +1943,6 @@ function sveltekitDetector(projectPath, packageJson) {
|
|
|
1966
1943
|
let confidence = 0;
|
|
1967
1944
|
let version;
|
|
1968
1945
|
const deps = collectAllDependencies(pkg);
|
|
1969
|
-
// @sveltejs/kit package
|
|
1970
1946
|
if (deps['@sveltejs/kit']) {
|
|
1971
1947
|
confidence += 70;
|
|
1972
1948
|
version = parseVersionString(deps['@sveltejs/kit']);
|
|
@@ -2045,13 +2021,11 @@ function qwikDetector(projectPath, packageJson) {
|
|
|
2045
2021
|
let confidence = 0;
|
|
2046
2022
|
let version;
|
|
2047
2023
|
const deps = collectAllDependencies(pkg);
|
|
2048
|
-
// @builder.io/qwik package
|
|
2049
2024
|
if (deps['@builder.io/qwik']) {
|
|
2050
2025
|
confidence += 70;
|
|
2051
2026
|
version = parseVersionString(deps['@builder.io/qwik']);
|
|
2052
2027
|
sources.push({ type: 'package.json', field: 'dependencies.@builder.io/qwik' });
|
|
2053
2028
|
}
|
|
2054
|
-
// @builder.io/qwik-city
|
|
2055
2029
|
if (deps['@builder.io/qwik-city']) {
|
|
2056
2030
|
confidence += 20;
|
|
2057
2031
|
sources.push({ type: 'package.json', field: 'dependencies.@builder.io/qwik-city' });
|
|
@@ -2144,23 +2118,19 @@ function angularJSDetector(projectPath, packageJson) {
|
|
|
2144
2118
|
let confidence = 0;
|
|
2145
2119
|
let version;
|
|
2146
2120
|
const deps = collectAllDependencies(pkg);
|
|
2147
|
-
// AngularJS package (angular, not @angular/core)
|
|
2148
2121
|
if (deps['angular']) {
|
|
2149
2122
|
confidence += 70;
|
|
2150
2123
|
version = parseVersionString(deps['angular']);
|
|
2151
2124
|
sources.push({ type: 'package.json', field: 'dependencies.angular' });
|
|
2152
2125
|
}
|
|
2153
|
-
// AngularJS router
|
|
2154
2126
|
if (deps['angular-route']) {
|
|
2155
2127
|
confidence += 15;
|
|
2156
2128
|
sources.push({ type: 'package.json', field: 'dependencies.angular-route' });
|
|
2157
2129
|
}
|
|
2158
|
-
// AngularJS resource
|
|
2159
2130
|
if (deps['angular-resource']) {
|
|
2160
2131
|
confidence += 10;
|
|
2161
2132
|
sources.push({ type: 'package.json', field: 'dependencies.angular-resource' });
|
|
2162
2133
|
}
|
|
2163
|
-
// AngularJS animate
|
|
2164
2134
|
if (deps['angular-animate']) {
|
|
2165
2135
|
confidence += 5;
|
|
2166
2136
|
sources.push({ type: 'package.json', field: 'dependencies.angular-animate' });
|
|
@@ -2191,23 +2161,19 @@ function backboneDetector(projectPath, packageJson) {
|
|
|
2191
2161
|
let confidence = 0;
|
|
2192
2162
|
let version;
|
|
2193
2163
|
const deps = collectAllDependencies(pkg);
|
|
2194
|
-
// Backbone package
|
|
2195
2164
|
if (deps['backbone']) {
|
|
2196
2165
|
confidence += 70;
|
|
2197
2166
|
version = parseVersionString(deps['backbone']);
|
|
2198
2167
|
sources.push({ type: 'package.json', field: 'dependencies.backbone' });
|
|
2199
|
-
// Underscore (commonly used with Backbone)
|
|
2200
2168
|
if (deps['underscore']) {
|
|
2201
2169
|
confidence += 15;
|
|
2202
2170
|
sources.push({ type: 'package.json', field: 'dependencies.underscore' });
|
|
2203
2171
|
}
|
|
2204
|
-
// Lodash can be used as underscore replacement
|
|
2205
2172
|
if (deps['lodash']) {
|
|
2206
2173
|
confidence += 5;
|
|
2207
2174
|
sources.push({ type: 'package.json', field: 'dependencies.lodash' });
|
|
2208
2175
|
}
|
|
2209
2176
|
}
|
|
2210
|
-
// Marionette (Backbone framework)
|
|
2211
2177
|
if (deps['backbone.marionette'] || deps['marionette']) {
|
|
2212
2178
|
confidence += 10;
|
|
2213
2179
|
sources.push({ type: 'package.json', field: 'dependencies.backbone.marionette' });
|
|
@@ -2238,18 +2204,15 @@ function emberDetector(projectPath, packageJson) {
|
|
|
2238
2204
|
let confidence = 0;
|
|
2239
2205
|
let version;
|
|
2240
2206
|
const deps = collectAllDependencies(pkg);
|
|
2241
|
-
// Ember source package
|
|
2242
2207
|
if (deps['ember-source']) {
|
|
2243
2208
|
confidence += 70;
|
|
2244
2209
|
version = parseVersionString(deps['ember-source']);
|
|
2245
2210
|
sources.push({ type: 'package.json', field: 'dependencies.ember-source' });
|
|
2246
2211
|
}
|
|
2247
|
-
// Ember CLI
|
|
2248
2212
|
if (deps['ember-cli']) {
|
|
2249
2213
|
confidence += 20;
|
|
2250
2214
|
sources.push({ type: 'package.json', field: 'devDependencies.ember-cli' });
|
|
2251
2215
|
}
|
|
2252
|
-
// Ember Data
|
|
2253
2216
|
if (deps['ember-data']) {
|
|
2254
2217
|
confidence += 10;
|
|
2255
2218
|
sources.push({ type: 'package.json', field: 'dependencies.ember-data' });
|
|
@@ -2280,18 +2243,15 @@ function jqueryDetector(projectPath, packageJson) {
|
|
|
2280
2243
|
let confidence = 0;
|
|
2281
2244
|
let version;
|
|
2282
2245
|
const deps = collectAllDependencies(pkg);
|
|
2283
|
-
// jQuery package
|
|
2284
2246
|
if (deps['jquery']) {
|
|
2285
2247
|
confidence += 80;
|
|
2286
2248
|
version = parseVersionString(deps['jquery']);
|
|
2287
2249
|
sources.push({ type: 'package.json', field: 'dependencies.jquery' });
|
|
2288
2250
|
}
|
|
2289
|
-
// jQuery UI
|
|
2290
2251
|
if (deps['jquery-ui']) {
|
|
2291
2252
|
confidence += 10;
|
|
2292
2253
|
sources.push({ type: 'package.json', field: 'dependencies.jquery-ui' });
|
|
2293
2254
|
}
|
|
2294
|
-
// jQuery plugins
|
|
2295
2255
|
if (deps['jquery-validation']) {
|
|
2296
2256
|
confidence += 5;
|
|
2297
2257
|
sources.push({ type: 'package.json', field: 'dependencies.jquery-validation' });
|
|
@@ -2420,7 +2380,6 @@ function prettierDetector(projectPath, packageJson) {
|
|
|
2420
2380
|
confidence += 30;
|
|
2421
2381
|
sources.push({ type: 'package.json', field: 'prettier' });
|
|
2422
2382
|
}
|
|
2423
|
-
// .prettierignore file
|
|
2424
2383
|
if (exists(node_path.join(projectPath, '.prettierignore'))) {
|
|
2425
2384
|
confidence += 10;
|
|
2426
2385
|
sources.push({ type: 'config-file', path: '.prettierignore' });
|
|
@@ -2515,7 +2474,6 @@ function biomeDetector(projectPath, packageJson) {
|
|
|
2515
2474
|
let configPath;
|
|
2516
2475
|
let version;
|
|
2517
2476
|
const deps = collectAllDependencies(pkg);
|
|
2518
|
-
// @biomejs/biome package
|
|
2519
2477
|
if (deps['@biomejs/biome']) {
|
|
2520
2478
|
confidence += 70;
|
|
2521
2479
|
version = parseVersionString(deps['@biomejs/biome']);
|
|
@@ -2784,7 +2742,7 @@ function npmWorkspacesDetector(workspacePath, packageJson) {
|
|
|
2784
2742
|
sources.push({ type: 'lockfile', path: 'package-lock.json' });
|
|
2785
2743
|
}
|
|
2786
2744
|
if (exists(node_path.join(workspacePath, 'yarn.lock'))) {
|
|
2787
|
-
return null;
|
|
2745
|
+
return null;
|
|
2788
2746
|
}
|
|
2789
2747
|
if (confidence === 0) {
|
|
2790
2748
|
return null;
|
|
@@ -3127,7 +3085,6 @@ function checkTsConfigStrict(projectPath) {
|
|
|
3127
3085
|
if (!content)
|
|
3128
3086
|
return undefined;
|
|
3129
3087
|
try {
|
|
3130
|
-
// Simple JSON parsing - doesn't handle comments but good enough for strict check
|
|
3131
3088
|
const cleanContent = content.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, '');
|
|
3132
3089
|
const parsed = parse(cleanContent);
|
|
3133
3090
|
return parsed?.compilerOptions?.strict === true;
|
|
@@ -3150,19 +3107,16 @@ function typescriptDetector(projectPath, packageJson) {
|
|
|
3150
3107
|
let configPath;
|
|
3151
3108
|
let version;
|
|
3152
3109
|
const deps = collectAllDependencies(pkg);
|
|
3153
|
-
// TypeScript package
|
|
3154
3110
|
if (deps['typescript']) {
|
|
3155
3111
|
confidence += 50;
|
|
3156
3112
|
version = parseVersionString(deps['typescript']);
|
|
3157
3113
|
sources.push({ type: 'package.json', field: 'dependencies.typescript' });
|
|
3158
3114
|
}
|
|
3159
|
-
// tsconfig.json
|
|
3160
3115
|
if (exists(node_path.join(projectPath, 'tsconfig.json'))) {
|
|
3161
3116
|
confidence += 40;
|
|
3162
3117
|
configPath = 'tsconfig.json';
|
|
3163
3118
|
sources.push({ type: 'config-file', path: 'tsconfig.json' });
|
|
3164
3119
|
}
|
|
3165
|
-
// tsconfig.*.json variants
|
|
3166
3120
|
const tsconfigVariants = ['tsconfig.build.json', 'tsconfig.lib.json', 'tsconfig.spec.json', 'tsconfig.app.json'];
|
|
3167
3121
|
for (const variant of tsconfigVariants) {
|
|
3168
3122
|
if (exists(node_path.join(projectPath, variant))) {
|
|
@@ -3171,7 +3125,6 @@ function typescriptDetector(projectPath, packageJson) {
|
|
|
3171
3125
|
break;
|
|
3172
3126
|
}
|
|
3173
3127
|
}
|
|
3174
|
-
// @types packages
|
|
3175
3128
|
const typePackages = keys(deps).filter((d) => d.startsWith('@types/'));
|
|
3176
3129
|
if (typePackages.length > 0) {
|
|
3177
3130
|
confidence += 10;
|
|
@@ -3205,24 +3158,20 @@ function flowDetector(projectPath, packageJson) {
|
|
|
3205
3158
|
let configPath;
|
|
3206
3159
|
let version;
|
|
3207
3160
|
const deps = collectAllDependencies(pkg);
|
|
3208
|
-
// flow-bin package
|
|
3209
3161
|
if (deps['flow-bin']) {
|
|
3210
3162
|
confidence += 60;
|
|
3211
3163
|
version = parseVersionString(deps['flow-bin']);
|
|
3212
3164
|
sources.push({ type: 'package.json', field: 'dependencies.flow-bin' });
|
|
3213
3165
|
}
|
|
3214
|
-
// .flowconfig
|
|
3215
3166
|
if (exists(node_path.join(projectPath, '.flowconfig'))) {
|
|
3216
3167
|
confidence += 40;
|
|
3217
3168
|
configPath = '.flowconfig';
|
|
3218
3169
|
sources.push({ type: 'config-file', path: '.flowconfig' });
|
|
3219
3170
|
}
|
|
3220
|
-
// flow-typed directory
|
|
3221
3171
|
if (exists(node_path.join(projectPath, 'flow-typed'))) {
|
|
3222
3172
|
confidence += 10;
|
|
3223
3173
|
sources.push({ type: 'directory', path: 'flow-typed/' });
|
|
3224
3174
|
}
|
|
3225
|
-
// @babel/preset-flow
|
|
3226
3175
|
if (deps['@babel/preset-flow']) {
|
|
3227
3176
|
confidence += 10;
|
|
3228
3177
|
sources.push({ type: 'package.json', field: 'dependencies.@babel/preset-flow' });
|
|
@@ -3246,7 +3195,6 @@ function flowDetector(projectPath, packageJson) {
|
|
|
3246
3195
|
* @returns `true` if the content contains JSDoc type annotations.
|
|
3247
3196
|
*/
|
|
3248
3197
|
function hasJsDocTypes(content) {
|
|
3249
|
-
// Check for JSDoc type annotations
|
|
3250
3198
|
return (content.includes('@type {') ||
|
|
3251
3199
|
content.includes('@param {') ||
|
|
3252
3200
|
content.includes('@returns {') ||
|
|
@@ -3265,14 +3213,11 @@ function jsdocDetector(projectPath, packageJson) {
|
|
|
3265
3213
|
const sources = [];
|
|
3266
3214
|
let confidence = 0;
|
|
3267
3215
|
const deps = collectAllDependencies(pkg);
|
|
3268
|
-
// jsdoc package
|
|
3269
3216
|
if (deps['jsdoc']) {
|
|
3270
3217
|
confidence += 30;
|
|
3271
3218
|
sources.push({ type: 'package.json', field: 'dependencies.jsdoc' });
|
|
3272
3219
|
}
|
|
3273
|
-
// typescript with checkJs (JSDoc type checking)
|
|
3274
3220
|
if (deps['typescript']) {
|
|
3275
|
-
// Check if checkJs is enabled in tsconfig
|
|
3276
3221
|
const tsconfigPath = node_path.join(projectPath, 'tsconfig.json');
|
|
3277
3222
|
const content = readFileIfExists(tsconfigPath);
|
|
3278
3223
|
if (content) {
|
|
@@ -3289,12 +3234,10 @@ function jsdocDetector(projectPath, packageJson) {
|
|
|
3289
3234
|
}
|
|
3290
3235
|
}
|
|
3291
3236
|
}
|
|
3292
|
-
// Check for jsconfig.json (VS Code JS type checking)
|
|
3293
3237
|
if (exists(node_path.join(projectPath, 'jsconfig.json'))) {
|
|
3294
3238
|
confidence += 40;
|
|
3295
3239
|
sources.push({ type: 'config-file', path: 'jsconfig.json' });
|
|
3296
3240
|
}
|
|
3297
|
-
// Sample check for JSDoc annotations in source files
|
|
3298
3241
|
const srcDir = node_path.join(projectPath, 'src');
|
|
3299
3242
|
if (exists(srcDir)) {
|
|
3300
3243
|
try {
|
|
@@ -3345,8 +3288,6 @@ const detectAllCache = createCache({ ttl: 60000, maxSize: 50 });
|
|
|
3345
3288
|
function isDetectAllOptions(value) {
|
|
3346
3289
|
if (typeof value !== 'object' || value === null)
|
|
3347
3290
|
return false;
|
|
3348
|
-
// DetectAllOptions has skipCache or packageJson fields specifically
|
|
3349
|
-
// PackageJson never has skipCache field
|
|
3350
3291
|
return 'skipCache' in value || 'packageJson' in value;
|
|
3351
3292
|
}
|
|
3352
3293
|
/**
|
|
@@ -3378,9 +3319,7 @@ function isDetectAllOptions(value) {
|
|
|
3378
3319
|
* ```
|
|
3379
3320
|
*/
|
|
3380
3321
|
function detectAll(projectPath, packageJsonOrOptions) {
|
|
3381
|
-
// Handle backward-compatible arguments
|
|
3382
3322
|
const options = isDetectAllOptions(packageJsonOrOptions) ? packageJsonOrOptions : { packageJson: packageJsonOrOptions };
|
|
3383
|
-
// Check cache first (unless skipCache is true)
|
|
3384
3323
|
if (!options.skipCache) {
|
|
3385
3324
|
const cached = detectAllCache.get(projectPath);
|
|
3386
3325
|
if (cached) {
|
|
@@ -3431,7 +3370,6 @@ function detectAll(projectPath, packageJsonOrOptions) {
|
|
|
3431
3370
|
legacyFrameworks: result.legacyFrameworks.map((f) => f.id),
|
|
3432
3371
|
testingFrameworks: result.testingFrameworks.map((f) => f.id),
|
|
3433
3372
|
});
|
|
3434
|
-
// Cache the result
|
|
3435
3373
|
detectAllCache.set(projectPath, result);
|
|
3436
3374
|
return result;
|
|
3437
3375
|
}
|