@colbymchenry/codegraph-darwin-x64 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/bin/codegraph.js +1 -1
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +7 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +30 -0
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +9 -14
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +75 -94
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +6 -0
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/index.d.ts +2 -14
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +9 -49
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts +2 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +2 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/targets/hermes.d.ts +18 -0
- package/lib/dist/installer/targets/hermes.d.ts.map +1 -0
- package/lib/dist/installer/targets/hermes.js +305 -0
- package/lib/dist/installer/targets/hermes.js.map +1 -0
- package/lib/dist/installer/targets/registry.d.ts.map +1 -1
- package/lib/dist/installer/targets/registry.js +2 -0
- package/lib/dist/installer/targets/registry.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +1 -1
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +25 -2
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/lib/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/drupal.js +335 -0
- package/lib/dist/resolution/frameworks/drupal.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +5 -1
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +2 -4
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +4 -6
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/types.d.ts +1 -55
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +3 -190
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.package-lock.json +10 -1
- package/lib/node_modules/ignore/LICENSE-MIT +21 -0
- package/lib/node_modules/ignore/README.md +452 -0
- package/lib/node_modules/ignore/index.d.ts +81 -0
- package/lib/node_modules/ignore/index.js +784 -0
- package/lib/node_modules/ignore/legacy.js +681 -0
- package/lib/node_modules/ignore/package.json +87 -0
- package/lib/package.json +2 -1
- package/package.json +1 -1
- package/lib/dist/config.d.ts +0 -51
- package/lib/dist/config.d.ts.map +0 -1
- package/lib/dist/config.js +0 -321
- package/lib/dist/config.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ignore",
|
|
3
|
+
"version": "7.0.5",
|
|
4
|
+
"description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
|
|
5
|
+
"types": "index.d.ts",
|
|
6
|
+
"files": [
|
|
7
|
+
"legacy.js",
|
|
8
|
+
"index.js",
|
|
9
|
+
"index.d.ts",
|
|
10
|
+
"LICENSE-MIT"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"prepublishOnly": "npm run build",
|
|
14
|
+
"build": "babel -o legacy.js index.js",
|
|
15
|
+
|
|
16
|
+
"==================== linting ======================": "",
|
|
17
|
+
"lint": "eslint .",
|
|
18
|
+
|
|
19
|
+
"===================== import ======================": "",
|
|
20
|
+
"ts": "npm run test:ts && npm run test:16",
|
|
21
|
+
"test:ts": "ts-node ./test/import/simple.ts",
|
|
22
|
+
"test:16": "npm run test:ts:16 && npm run test:cjs:16 && npm run test:mjs:16",
|
|
23
|
+
"test:ts:16": "ts-node --compilerOptions '{\"moduleResolution\": \"Node16\", \"module\": \"Node16\"}' ./test/import/simple.ts && tsc ./test/import/simple.ts --lib ES6 --moduleResolution Node16 --module Node16 && node ./test/import/simple.js",
|
|
24
|
+
"test:cjs:16": "ts-node --compilerOptions '{\"moduleResolution\": \"Node16\", \"module\": \"Node16\"}' ./test/import/simple.cjs",
|
|
25
|
+
"test:mjs:16": "ts-node --compilerOptions '{\"moduleResolution\": \"Node16\", \"module\": \"Node16\"}' ./test/import/simple.mjs && babel -o ./test/import/simple-mjs.js ./test/import/simple.mjs && node ./test/import/simple-mjs.js",
|
|
26
|
+
|
|
27
|
+
"===================== cases =======================": "",
|
|
28
|
+
"test:cases": "npm run tap test/*.test.js -- --coverage",
|
|
29
|
+
"tap": "tap --reporter classic",
|
|
30
|
+
|
|
31
|
+
"===================== debug =======================": "",
|
|
32
|
+
"test:git": "npm run tap test/git-check-ignore.test.js",
|
|
33
|
+
"test:ignore": "npm run tap test/ignore.test.js",
|
|
34
|
+
"test:ignore:only": "IGNORE_ONLY_IGNORES=1 npm run tap test/ignore.test.js",
|
|
35
|
+
"test:others": "npm run tap test/others.test.js",
|
|
36
|
+
"test:no-coverage": "npm run tap test/*.test.js -- --no-check-coverage",
|
|
37
|
+
|
|
38
|
+
"test": "npm run lint && npm run ts && npm run build && npm run test:cases",
|
|
39
|
+
"test:win32": "IGNORE_TEST_WIN32=1 npm run test",
|
|
40
|
+
"report": "tap --coverage-report=html"
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git@github.com:kaelzhang/node-ignore.git"
|
|
45
|
+
},
|
|
46
|
+
"keywords": [
|
|
47
|
+
"ignore",
|
|
48
|
+
".gitignore",
|
|
49
|
+
"gitignore",
|
|
50
|
+
"npmignore",
|
|
51
|
+
"rules",
|
|
52
|
+
"manager",
|
|
53
|
+
"filter",
|
|
54
|
+
"regexp",
|
|
55
|
+
"regex",
|
|
56
|
+
"fnmatch",
|
|
57
|
+
"glob",
|
|
58
|
+
"asterisks",
|
|
59
|
+
"regular-expression"
|
|
60
|
+
],
|
|
61
|
+
"author": "kael",
|
|
62
|
+
"license": "MIT",
|
|
63
|
+
"bugs": {
|
|
64
|
+
"url": "https://github.com/kaelzhang/node-ignore/issues"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@babel/cli": "^7.22.9",
|
|
68
|
+
"@babel/core": "^7.22.9",
|
|
69
|
+
"@babel/preset-env": "^7.22.9",
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^8.19.1",
|
|
71
|
+
"debug": "^4.3.4",
|
|
72
|
+
"eslint": "^8.46.0",
|
|
73
|
+
"eslint-config-ostai": "^3.0.0",
|
|
74
|
+
"eslint-plugin-import": "^2.28.0",
|
|
75
|
+
"mkdirp": "^3.0.1",
|
|
76
|
+
"pre-suf": "^1.1.1",
|
|
77
|
+
"rimraf": "^6.0.1",
|
|
78
|
+
"spawn-sync": "^2.0.0",
|
|
79
|
+
"tap": "^16.3.9",
|
|
80
|
+
"tmp": "0.2.3",
|
|
81
|
+
"ts-node": "^10.9.2",
|
|
82
|
+
"typescript": "^5.6.2"
|
|
83
|
+
},
|
|
84
|
+
"engines": {
|
|
85
|
+
"node": ">= 4"
|
|
86
|
+
}
|
|
87
|
+
}
|
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colbymchenry/codegraph",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Supercharge Claude Code with semantic code intelligence. 94% fewer tool calls • 77% faster exploration • 100% local.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"commander": "^14.0.2",
|
|
37
37
|
"fast-string-width": "^3.0.2",
|
|
38
38
|
"fast-wrap-ansi": "^0.2.0",
|
|
39
|
+
"ignore": "^7.0.5",
|
|
39
40
|
"jsonc-parser": "^3.3.1",
|
|
40
41
|
"picomatch": "^4.0.3",
|
|
41
42
|
"sisteransi": "^1.0.5",
|
package/package.json
CHANGED
package/lib/dist/config.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration Management
|
|
3
|
-
*
|
|
4
|
-
* Load, save, and validate CodeGraph configuration.
|
|
5
|
-
*/
|
|
6
|
-
import { CodeGraphConfig, NodeKind } from './types';
|
|
7
|
-
/**
|
|
8
|
-
* Configuration filename
|
|
9
|
-
*/
|
|
10
|
-
export declare const CONFIG_FILENAME = "config.json";
|
|
11
|
-
/**
|
|
12
|
-
* Get the config file path for a project
|
|
13
|
-
*/
|
|
14
|
-
export declare function getConfigPath(projectRoot: string): string;
|
|
15
|
-
/**
|
|
16
|
-
* Validate a configuration object
|
|
17
|
-
*/
|
|
18
|
-
export declare function validateConfig(config: unknown): config is CodeGraphConfig;
|
|
19
|
-
/**
|
|
20
|
-
* Load configuration from a project
|
|
21
|
-
*/
|
|
22
|
-
export declare function loadConfig(projectRoot: string): CodeGraphConfig;
|
|
23
|
-
/**
|
|
24
|
-
* Save configuration to a project
|
|
25
|
-
*/
|
|
26
|
-
export declare function saveConfig(projectRoot: string, config: CodeGraphConfig): void;
|
|
27
|
-
/**
|
|
28
|
-
* Create default configuration for a new project
|
|
29
|
-
*/
|
|
30
|
-
export declare function createDefaultConfig(projectRoot: string): CodeGraphConfig;
|
|
31
|
-
/**
|
|
32
|
-
* Update specific configuration values
|
|
33
|
-
*/
|
|
34
|
-
export declare function updateConfig(projectRoot: string, updates: Partial<CodeGraphConfig>): CodeGraphConfig;
|
|
35
|
-
/**
|
|
36
|
-
* Add patterns to include list
|
|
37
|
-
*/
|
|
38
|
-
export declare function addIncludePatterns(projectRoot: string, patterns: string[]): CodeGraphConfig;
|
|
39
|
-
/**
|
|
40
|
-
* Add patterns to exclude list
|
|
41
|
-
*/
|
|
42
|
-
export declare function addExcludePatterns(projectRoot: string, patterns: string[]): CodeGraphConfig;
|
|
43
|
-
/**
|
|
44
|
-
* Add a custom pattern
|
|
45
|
-
*/
|
|
46
|
-
export declare function addCustomPattern(projectRoot: string, name: string, pattern: string, kind: NodeKind): CodeGraphConfig;
|
|
47
|
-
/**
|
|
48
|
-
* Check if a file path matches the include/exclude patterns
|
|
49
|
-
*/
|
|
50
|
-
export declare function shouldIncludeFile(filePath: string, config: CodeGraphConfig): boolean;
|
|
51
|
-
//# sourceMappingURL=config.d.ts.map
|
package/lib/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAA4B,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG9E;;GAEG;AACH,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AA2BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,eAAe,CA0DzE;AAuBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA8B/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAmB7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAKxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,eAAe,CAMjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,CAM3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,CAM3F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,GACb,eAAe,CAkBjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CA2BpF"}
|
package/lib/dist/config.js
DELETED
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Configuration Management
|
|
4
|
-
*
|
|
5
|
-
* Load, save, and validate CodeGraph configuration.
|
|
6
|
-
*/
|
|
7
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
-
if (k2 === undefined) k2 = k;
|
|
9
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(o, k2, desc);
|
|
14
|
-
}) : (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
o[k2] = m[k];
|
|
17
|
-
}));
|
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
-
}) : function(o, v) {
|
|
21
|
-
o["default"] = v;
|
|
22
|
-
});
|
|
23
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
-
var ownKeys = function(o) {
|
|
25
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
-
var ar = [];
|
|
27
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
-
return ar;
|
|
29
|
-
};
|
|
30
|
-
return ownKeys(o);
|
|
31
|
-
};
|
|
32
|
-
return function (mod) {
|
|
33
|
-
if (mod && mod.__esModule) return mod;
|
|
34
|
-
var result = {};
|
|
35
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
-
__setModuleDefault(result, mod);
|
|
37
|
-
return result;
|
|
38
|
-
};
|
|
39
|
-
})();
|
|
40
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
-
};
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.CONFIG_FILENAME = void 0;
|
|
45
|
-
exports.getConfigPath = getConfigPath;
|
|
46
|
-
exports.validateConfig = validateConfig;
|
|
47
|
-
exports.loadConfig = loadConfig;
|
|
48
|
-
exports.saveConfig = saveConfig;
|
|
49
|
-
exports.createDefaultConfig = createDefaultConfig;
|
|
50
|
-
exports.updateConfig = updateConfig;
|
|
51
|
-
exports.addIncludePatterns = addIncludePatterns;
|
|
52
|
-
exports.addExcludePatterns = addExcludePatterns;
|
|
53
|
-
exports.addCustomPattern = addCustomPattern;
|
|
54
|
-
exports.shouldIncludeFile = shouldIncludeFile;
|
|
55
|
-
const fs = __importStar(require("fs"));
|
|
56
|
-
const path = __importStar(require("path"));
|
|
57
|
-
const picomatch_1 = __importDefault(require("picomatch"));
|
|
58
|
-
const types_1 = require("./types");
|
|
59
|
-
const utils_1 = require("./utils");
|
|
60
|
-
/**
|
|
61
|
-
* Configuration filename
|
|
62
|
-
*/
|
|
63
|
-
exports.CONFIG_FILENAME = 'config.json';
|
|
64
|
-
/**
|
|
65
|
-
* Get the config file path for a project
|
|
66
|
-
*/
|
|
67
|
-
function getConfigPath(projectRoot) {
|
|
68
|
-
return path.join(projectRoot, '.codegraph', exports.CONFIG_FILENAME);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Check if a regex pattern is safe from ReDoS attacks.
|
|
72
|
-
*
|
|
73
|
-
* Rejects patterns with nested quantifiers (e.g., (a+)+, (a*)*) which
|
|
74
|
-
* are the primary source of catastrophic backtracking. Also rejects
|
|
75
|
-
* excessively long patterns and validates compilability.
|
|
76
|
-
*/
|
|
77
|
-
function isSafeRegex(pattern) {
|
|
78
|
-
// Reject excessively long patterns
|
|
79
|
-
if (pattern.length > 500)
|
|
80
|
-
return false;
|
|
81
|
-
// Reject nested quantifiers: (...)+ followed by +, *, or {
|
|
82
|
-
// These are the primary cause of catastrophic backtracking
|
|
83
|
-
if (/([+*}])\s*[+*{]/.test(pattern))
|
|
84
|
-
return false;
|
|
85
|
-
if (/\([^)]*[+*][^)]*\)[+*{]/.test(pattern))
|
|
86
|
-
return false;
|
|
87
|
-
// Verify the pattern is a valid regex
|
|
88
|
-
try {
|
|
89
|
-
new RegExp(pattern);
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Validate a configuration object
|
|
98
|
-
*/
|
|
99
|
-
function validateConfig(config) {
|
|
100
|
-
if (typeof config !== 'object' || config === null) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
const c = config;
|
|
104
|
-
// Required fields
|
|
105
|
-
if (typeof c.version !== 'number')
|
|
106
|
-
return false;
|
|
107
|
-
if (typeof c.rootDir !== 'string')
|
|
108
|
-
return false;
|
|
109
|
-
if (!Array.isArray(c.include))
|
|
110
|
-
return false;
|
|
111
|
-
if (!Array.isArray(c.exclude))
|
|
112
|
-
return false;
|
|
113
|
-
if (!Array.isArray(c.languages))
|
|
114
|
-
return false;
|
|
115
|
-
if (!Array.isArray(c.frameworks))
|
|
116
|
-
return false;
|
|
117
|
-
if (typeof c.maxFileSize !== 'number')
|
|
118
|
-
return false;
|
|
119
|
-
if (typeof c.extractDocstrings !== 'boolean')
|
|
120
|
-
return false;
|
|
121
|
-
if (typeof c.trackCallSites !== 'boolean')
|
|
122
|
-
return false;
|
|
123
|
-
// Validate include/exclude are string arrays
|
|
124
|
-
if (!c.include.every((p) => typeof p === 'string'))
|
|
125
|
-
return false;
|
|
126
|
-
if (!c.exclude.every((p) => typeof p === 'string'))
|
|
127
|
-
return false;
|
|
128
|
-
// Validate languages
|
|
129
|
-
const validLanguages = [
|
|
130
|
-
'typescript',
|
|
131
|
-
'javascript',
|
|
132
|
-
'python',
|
|
133
|
-
'go',
|
|
134
|
-
'rust',
|
|
135
|
-
'java',
|
|
136
|
-
'svelte',
|
|
137
|
-
'unknown',
|
|
138
|
-
];
|
|
139
|
-
if (!c.languages.every((l) => validLanguages.includes(l)))
|
|
140
|
-
return false;
|
|
141
|
-
// Validate frameworks
|
|
142
|
-
for (const fw of c.frameworks) {
|
|
143
|
-
if (typeof fw !== 'object' || fw === null)
|
|
144
|
-
return false;
|
|
145
|
-
const framework = fw;
|
|
146
|
-
if (typeof framework.name !== 'string')
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
// Validate custom patterns if present
|
|
150
|
-
if (c.customPatterns !== undefined) {
|
|
151
|
-
if (!Array.isArray(c.customPatterns))
|
|
152
|
-
return false;
|
|
153
|
-
for (const pattern of c.customPatterns) {
|
|
154
|
-
if (typeof pattern !== 'object' || pattern === null)
|
|
155
|
-
return false;
|
|
156
|
-
const p = pattern;
|
|
157
|
-
if (typeof p.name !== 'string')
|
|
158
|
-
return false;
|
|
159
|
-
if (typeof p.pattern !== 'string')
|
|
160
|
-
return false;
|
|
161
|
-
if (typeof p.kind !== 'string')
|
|
162
|
-
return false;
|
|
163
|
-
// Validate regex is compilable and reject patterns with known ReDoS risks
|
|
164
|
-
if (!isSafeRegex(p.pattern))
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return true;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Merge configuration with defaults
|
|
172
|
-
*/
|
|
173
|
-
function mergeConfig(defaults, overrides) {
|
|
174
|
-
return {
|
|
175
|
-
version: overrides.version ?? defaults.version,
|
|
176
|
-
rootDir: overrides.rootDir ?? defaults.rootDir,
|
|
177
|
-
include: overrides.include ?? defaults.include,
|
|
178
|
-
exclude: overrides.exclude ?? defaults.exclude,
|
|
179
|
-
languages: overrides.languages ?? defaults.languages,
|
|
180
|
-
frameworks: overrides.frameworks ?? defaults.frameworks,
|
|
181
|
-
maxFileSize: overrides.maxFileSize ?? defaults.maxFileSize,
|
|
182
|
-
extractDocstrings: overrides.extractDocstrings ?? defaults.extractDocstrings,
|
|
183
|
-
trackCallSites: overrides.trackCallSites ?? defaults.trackCallSites,
|
|
184
|
-
customPatterns: overrides.customPatterns ?? defaults.customPatterns,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Load configuration from a project
|
|
189
|
-
*/
|
|
190
|
-
function loadConfig(projectRoot) {
|
|
191
|
-
const configPath = getConfigPath(projectRoot);
|
|
192
|
-
if (!fs.existsSync(configPath)) {
|
|
193
|
-
// Return default config with adjusted rootDir
|
|
194
|
-
return {
|
|
195
|
-
...types_1.DEFAULT_CONFIG,
|
|
196
|
-
rootDir: projectRoot,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
try {
|
|
200
|
-
const content = fs.readFileSync(configPath, 'utf-8');
|
|
201
|
-
const parsed = JSON.parse(content);
|
|
202
|
-
// Merge with defaults to ensure all fields are present
|
|
203
|
-
const merged = mergeConfig(types_1.DEFAULT_CONFIG, parsed);
|
|
204
|
-
merged.rootDir = projectRoot; // Always use actual project root
|
|
205
|
-
if (!validateConfig(merged)) {
|
|
206
|
-
throw new Error('Invalid configuration format');
|
|
207
|
-
}
|
|
208
|
-
return merged;
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
211
|
-
if (error instanceof SyntaxError) {
|
|
212
|
-
throw new Error(`Invalid JSON in config file: ${configPath}`);
|
|
213
|
-
}
|
|
214
|
-
throw error;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Save configuration to a project
|
|
219
|
-
*/
|
|
220
|
-
function saveConfig(projectRoot, config) {
|
|
221
|
-
const configPath = getConfigPath(projectRoot);
|
|
222
|
-
const dir = path.dirname(configPath);
|
|
223
|
-
// Ensure directory exists
|
|
224
|
-
if (!fs.existsSync(dir)) {
|
|
225
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
226
|
-
}
|
|
227
|
-
// Create a copy without rootDir (it's always derived from project path)
|
|
228
|
-
const toSave = { ...config };
|
|
229
|
-
delete toSave.rootDir;
|
|
230
|
-
const content = JSON.stringify(toSave, null, 2);
|
|
231
|
-
// Atomic write: write to temp file then rename to prevent partial/corrupt configs
|
|
232
|
-
const tmpPath = configPath + '.tmp';
|
|
233
|
-
fs.writeFileSync(tmpPath, content, 'utf-8');
|
|
234
|
-
fs.renameSync(tmpPath, configPath);
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Create default configuration for a new project
|
|
238
|
-
*/
|
|
239
|
-
function createDefaultConfig(projectRoot) {
|
|
240
|
-
return {
|
|
241
|
-
...types_1.DEFAULT_CONFIG,
|
|
242
|
-
rootDir: projectRoot,
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Update specific configuration values
|
|
247
|
-
*/
|
|
248
|
-
function updateConfig(projectRoot, updates) {
|
|
249
|
-
const current = loadConfig(projectRoot);
|
|
250
|
-
const updated = mergeConfig(current, updates);
|
|
251
|
-
updated.rootDir = projectRoot;
|
|
252
|
-
saveConfig(projectRoot, updated);
|
|
253
|
-
return updated;
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Add patterns to include list
|
|
257
|
-
*/
|
|
258
|
-
function addIncludePatterns(projectRoot, patterns) {
|
|
259
|
-
const config = loadConfig(projectRoot);
|
|
260
|
-
const newPatterns = patterns.filter((p) => !config.include.includes(p));
|
|
261
|
-
config.include = [...config.include, ...newPatterns];
|
|
262
|
-
saveConfig(projectRoot, config);
|
|
263
|
-
return config;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Add patterns to exclude list
|
|
267
|
-
*/
|
|
268
|
-
function addExcludePatterns(projectRoot, patterns) {
|
|
269
|
-
const config = loadConfig(projectRoot);
|
|
270
|
-
const newPatterns = patterns.filter((p) => !config.exclude.includes(p));
|
|
271
|
-
config.exclude = [...config.exclude, ...newPatterns];
|
|
272
|
-
saveConfig(projectRoot, config);
|
|
273
|
-
return config;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Add a custom pattern
|
|
277
|
-
*/
|
|
278
|
-
function addCustomPattern(projectRoot, name, pattern, kind) {
|
|
279
|
-
const config = loadConfig(projectRoot);
|
|
280
|
-
if (!config.customPatterns) {
|
|
281
|
-
config.customPatterns = [];
|
|
282
|
-
}
|
|
283
|
-
// Check for duplicate name
|
|
284
|
-
const existing = config.customPatterns.find((p) => p.name === name);
|
|
285
|
-
if (existing) {
|
|
286
|
-
existing.pattern = pattern;
|
|
287
|
-
existing.kind = kind;
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
config.customPatterns.push({ name, pattern, kind });
|
|
291
|
-
}
|
|
292
|
-
saveConfig(projectRoot, config);
|
|
293
|
-
return config;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Check if a file path matches the include/exclude patterns
|
|
297
|
-
*/
|
|
298
|
-
function shouldIncludeFile(filePath, config) {
|
|
299
|
-
// Normalize to forward slashes so Windows backslash paths match glob patterns
|
|
300
|
-
filePath = (0, utils_1.normalizePath)(filePath);
|
|
301
|
-
// Simple glob matching (for now, just check if any pattern matches)
|
|
302
|
-
// A full implementation would use a proper glob library
|
|
303
|
-
const matchesPattern = (pattern, filePath) => {
|
|
304
|
-
return picomatch_1.default.isMatch(filePath, pattern, { dot: true });
|
|
305
|
-
};
|
|
306
|
-
// Check exclude patterns first
|
|
307
|
-
for (const pattern of config.exclude) {
|
|
308
|
-
if (matchesPattern(pattern, filePath)) {
|
|
309
|
-
return false;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
// Check include patterns
|
|
313
|
-
for (const pattern of config.include) {
|
|
314
|
-
if (matchesPattern(pattern, filePath)) {
|
|
315
|
-
return true;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
// Default to not including if no pattern matches
|
|
319
|
-
return false;
|
|
320
|
-
}
|
|
321
|
-
//# sourceMappingURL=config.js.map
|
package/lib/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|