codesift-mcp 0.5.30 → 0.8.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/README.md +7 -2
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +25 -3
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/git-hooks-installer.d.ts +2 -0
- package/dist/cli/git-hooks-installer.d.ts.map +1 -1
- package/dist/cli/git-hooks-installer.js +47 -7
- package/dist/cli/git-hooks-installer.js.map +1 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +53 -0
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/setup.d.ts +5 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +31 -5
- package/dist/cli/setup.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -1
- package/dist/config.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +6 -1
- package/dist/instructions.js.map +1 -1
- package/dist/parser/extractors/_shared.js +2 -2
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/hono.d.ts.map +1 -1
- package/dist/parser/extractors/hono.js +60 -15
- package/dist/parser/extractors/hono.js.map +1 -1
- package/dist/parser/extractors/php.d.ts +12 -0
- package/dist/parser/extractors/php.d.ts.map +1 -1
- package/dist/parser/extractors/php.js +440 -26
- package/dist/parser/extractors/php.js.map +1 -1
- package/dist/parser/extractors/python.js +4 -5
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +70 -22
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/register-tool-loaders.d.ts +22 -0
- package/dist/register-tool-loaders.d.ts.map +1 -1
- package/dist/register-tool-loaders.js +38 -0
- package/dist/register-tool-loaders.js.map +1 -1
- package/dist/register-tools.d.ts +3 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +527 -7
- package/dist/register-tools.js.map +1 -1
- package/dist/retrieval/codebase-retrieval.d.ts.map +1 -1
- package/dist/retrieval/codebase-retrieval.js +22 -0
- package/dist/retrieval/codebase-retrieval.js.map +1 -1
- package/dist/retrieval/retrieval-schemas.d.ts +4 -0
- package/dist/retrieval/retrieval-schemas.d.ts.map +1 -1
- package/dist/retrieval/semantic-handlers.js +1 -1
- package/dist/retrieval/semantic-handlers.js.map +1 -1
- package/dist/search/semantic.d.ts +21 -5
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +129 -4
- package/dist/search/semantic.js.map +1 -1
- package/dist/search/tool-ranker.js +1 -1
- package/dist/search/tool-ranker.js.map +1 -1
- package/dist/server-helpers.js +1 -1
- package/dist/server-helpers.js.map +1 -1
- package/dist/storage/index-store.d.ts +13 -1
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +34 -33
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/registry.d.ts +28 -4
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +126 -5
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/usage-stats.d.ts +2 -0
- package/dist/storage/usage-stats.d.ts.map +1 -1
- package/dist/storage/usage-stats.js +6 -0
- package/dist/storage/usage-stats.js.map +1 -1
- package/dist/tools/_helpers.d.ts +2 -0
- package/dist/tools/_helpers.d.ts.map +1 -1
- package/dist/tools/_helpers.js +16 -1
- package/dist/tools/_helpers.js.map +1 -1
- package/dist/tools/astro-audit.d.ts +40 -0
- package/dist/tools/astro-audit.d.ts.map +1 -1
- package/dist/tools/astro-audit.js +94 -5
- package/dist/tools/astro-audit.js.map +1 -1
- package/dist/tools/astro-env-validator.d.ts +38 -0
- package/dist/tools/astro-env-validator.d.ts.map +1 -0
- package/dist/tools/astro-env-validator.js +190 -0
- package/dist/tools/astro-env-validator.js.map +1 -0
- package/dist/tools/astro-helpers.js +2 -2
- package/dist/tools/astro-helpers.js.map +1 -1
- package/dist/tools/astro-image-audit.d.ts +35 -0
- package/dist/tools/astro-image-audit.d.ts.map +1 -0
- package/dist/tools/astro-image-audit.js +129 -0
- package/dist/tools/astro-image-audit.js.map +1 -0
- package/dist/tools/astro-middleware.d.ts.map +1 -1
- package/dist/tools/astro-middleware.js +36 -11
- package/dist/tools/astro-middleware.js.map +1 -1
- package/dist/tools/astro-migration.d.ts.map +1 -1
- package/dist/tools/astro-migration.js +66 -0
- package/dist/tools/astro-migration.js.map +1 -1
- package/dist/tools/astro-svg-components.d.ts +32 -0
- package/dist/tools/astro-svg-components.d.ts.map +1 -0
- package/dist/tools/astro-svg-components.js +123 -0
- package/dist/tools/astro-svg-components.js.map +1 -0
- package/dist/tools/context-tools.d.ts.map +1 -1
- package/dist/tools/context-tools.js +45 -7
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/conversation-tools.js +1 -1
- package/dist/tools/conversation-tools.js.map +1 -1
- package/dist/tools/index-tools.d.ts +12 -0
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +54 -6
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/insights-tools.d.ts +137 -0
- package/dist/tools/insights-tools.d.ts.map +1 -0
- package/dist/tools/insights-tools.js +438 -0
- package/dist/tools/insights-tools.js.map +1 -0
- package/dist/tools/pattern-tools.d.ts +7 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +292 -19
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/php-tools.d.ts +78 -4
- package/dist/tools/php-tools.d.ts.map +1 -1
- package/dist/tools/php-tools.js +824 -42
- package/dist/tools/php-tools.js.map +1 -1
- package/dist/tools/php8-compat-tools.d.ts +62 -0
- package/dist/tools/php8-compat-tools.d.ts.map +1 -0
- package/dist/tools/php8-compat-tools.js +287 -0
- package/dist/tools/php8-compat-tools.js.map +1 -0
- package/dist/tools/php8-migration-candidates-tools.d.ts +68 -0
- package/dist/tools/php8-migration-candidates-tools.d.ts.map +1 -0
- package/dist/tools/php8-migration-candidates-tools.js +476 -0
- package/dist/tools/php8-migration-candidates-tools.js.map +1 -0
- package/dist/tools/phpstan-baseline-tools.d.ts +62 -0
- package/dist/tools/phpstan-baseline-tools.d.ts.map +1 -0
- package/dist/tools/phpstan-baseline-tools.js +263 -0
- package/dist/tools/phpstan-baseline-tools.js.map +1 -0
- package/dist/tools/project-tools.d.ts +4 -2
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +20 -7
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/react-tools.d.ts +39 -9
- package/dist/tools/react-tools.d.ts.map +1 -1
- package/dist/tools/react-tools.js +313 -18
- package/dist/tools/react-tools.js.map +1 -1
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +35 -5
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/status-tools.d.ts +1 -0
- package/dist/tools/status-tools.d.ts.map +1 -1
- package/dist/tools/status-tools.js +1 -0
- package/dist/tools/status-tools.js.map +1 -1
- package/dist/tools/symbol-tools.d.ts +11 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +107 -6
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/yii-console-tools.d.ts +69 -0
- package/dist/tools/yii-console-tools.d.ts.map +1 -0
- package/dist/tools/yii-console-tools.js +256 -0
- package/dist/tools/yii-console-tools.js.map +1 -0
- package/dist/tools/yii-migrations-tools.d.ts +79 -0
- package/dist/tools/yii-migrations-tools.d.ts.map +1 -0
- package/dist/tools/yii-migrations-tools.js +543 -0
- package/dist/tools/yii-migrations-tools.js.map +1 -0
- package/dist/tools/yii-modules-tools.d.ts +63 -0
- package/dist/tools/yii-modules-tools.d.ts.map +1 -0
- package/dist/tools/yii-modules-tools.js +201 -0
- package/dist/tools/yii-modules-tools.js.map +1 -0
- package/dist/tools/yii-rbac-tools.d.ts +89 -0
- package/dist/tools/yii-rbac-tools.d.ts.map +1 -0
- package/dist/tools/yii-rbac-tools.js +238 -0
- package/dist/tools/yii-rbac-tools.js.map +1 -0
- package/dist/tools/yii3-attribute-candidates-tools.d.ts +72 -0
- package/dist/tools/yii3-attribute-candidates-tools.d.ts.map +1 -0
- package/dist/tools/yii3-attribute-candidates-tools.js +301 -0
- package/dist/tools/yii3-attribute-candidates-tools.js.map +1 -0
- package/dist/tools/yii3-migration-tools.d.ts +74 -0
- package/dist/tools/yii3-migration-tools.d.ts.map +1 -0
- package/dist/tools/yii3-migration-tools.js +440 -0
- package/dist/tools/yii3-migration-tools.js.map +1 -0
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/constant-file-pattern.d.ts +3 -1
- package/dist/utils/constant-file-pattern.d.ts.map +1 -1
- package/dist/utils/constant-file-pattern.js +6 -4
- package/dist/utils/constant-file-pattern.js.map +1 -1
- package/dist/utils/heritage-edges.d.ts +29 -0
- package/dist/utils/heritage-edges.d.ts.map +1 -0
- package/dist/utils/heritage-edges.js +94 -0
- package/dist/utils/heritage-edges.js.map +1 -0
- package/dist/utils/source-stripper.d.ts +23 -0
- package/dist/utils/source-stripper.d.ts.map +1 -0
- package/dist/utils/source-stripper.js +239 -0
- package/dist/utils/source-stripper.js.map +1 -0
- package/dist/utils/ts-imports.d.ts +7 -1
- package/dist/utils/ts-imports.d.ts.map +1 -1
- package/dist/utils/ts-imports.js +40 -7
- package/dist/utils/ts-imports.js.map +1 -1
- package/dist/utils/tsconfig-paths.d.ts +6 -5
- package/dist/utils/tsconfig-paths.d.ts.map +1 -1
- package/dist/utils/tsconfig-paths.js +52 -14
- package/dist/utils/tsconfig-paths.js.map +1 -1
- package/dist/utils/wall-clock.d.ts +9 -0
- package/dist/utils/wall-clock.d.ts.map +1 -0
- package/dist/utils/wall-clock.js +19 -0
- package/dist/utils/wall-clock.js.map +1 -0
- package/package.json +1 -1
- package/rules/codesift.md +16 -6
- package/rules/codesift.mdc +10 -3
- package/rules/codex.md +10 -3
- package/rules/gemini.md +10 -3
|
@@ -43,6 +43,23 @@ export function parsePhpDocTags(docstring) {
|
|
|
43
43
|
}
|
|
44
44
|
return results;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract a `@var T` type annotation from a PHPDoc block. Used for inferring
|
|
48
|
+
* property types in pre-PHP-7.4 codebases that keep typing in docblocks
|
|
49
|
+
* rather than as inline type hints. Returns the raw type string (no further
|
|
50
|
+
* normalization) or undefined if no `@var` is present.
|
|
51
|
+
*
|
|
52
|
+
* Examples:
|
|
53
|
+
* /** @var string *\/ → "string"
|
|
54
|
+
* /** @var User|null *\/ → "User|null"
|
|
55
|
+
* /** @var int[] *\/ → "int[]"
|
|
56
|
+
*/
|
|
57
|
+
export function parsePhpDocVar(docstring) {
|
|
58
|
+
if (!docstring)
|
|
59
|
+
return undefined;
|
|
60
|
+
const m = /@var\s+(\S+)/.exec(docstring);
|
|
61
|
+
return m?.[1];
|
|
62
|
+
}
|
|
46
63
|
// --- Helpers ---
|
|
47
64
|
/**
|
|
48
65
|
* PHP docblocks are `comment` nodes starting with `/**` that precede a declaration.
|
|
@@ -77,23 +94,213 @@ function getSignature(node, source) {
|
|
|
77
94
|
return sig;
|
|
78
95
|
}
|
|
79
96
|
/**
|
|
80
|
-
*
|
|
97
|
+
* Test base classes that mark a class as a test suite. Includes PHPUnit
|
|
98
|
+
* (TestCase) and Codeception (Unit, Cest, Cept) — the latter pair are the
|
|
99
|
+
* canonical Codeception base classes used in panels like tgm-panel.
|
|
81
100
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
101
|
+
const TEST_BASE_NAMES = new Set([
|
|
102
|
+
"TestCase",
|
|
103
|
+
"Unit",
|
|
104
|
+
"Cest",
|
|
105
|
+
"Cept",
|
|
106
|
+
]);
|
|
107
|
+
/**
|
|
108
|
+
* Extract the list of base class names from a `base_clause` node. Returns
|
|
109
|
+
* fully-qualified names exactly as written in source (e.g. ["BaseUser",
|
|
110
|
+
* "\\yii\\db\\ActiveRecord", "Codeception\\Test\\Unit"]). Aliases stay as
|
|
111
|
+
* source-side names — namespace resolution is the resolver's job, not the
|
|
112
|
+
* extractor's.
|
|
113
|
+
*/
|
|
114
|
+
function parseBaseClause(baseClause) {
|
|
115
|
+
if (!baseClause)
|
|
116
|
+
return [];
|
|
117
|
+
const names = [];
|
|
118
|
+
for (const child of baseClause.namedChildren) {
|
|
119
|
+
if (child.type === "name" || child.type === "qualified_name") {
|
|
120
|
+
const text = child.text.trim();
|
|
121
|
+
if (text)
|
|
122
|
+
names.push(text);
|
|
123
|
+
}
|
|
88
124
|
}
|
|
89
|
-
//
|
|
125
|
+
// Fallback: tree-sitter-php sometimes flattens children. Strip the keyword
|
|
126
|
+
// prefix and split on commas if no structured children were found.
|
|
127
|
+
if (names.length === 0) {
|
|
128
|
+
const stripped = baseClause.text.replace(/^extends\s+/, "").trim();
|
|
129
|
+
if (stripped) {
|
|
130
|
+
for (const n of stripped.split(/\s*,\s*/)) {
|
|
131
|
+
if (n)
|
|
132
|
+
names.push(n);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return names;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Extract the list of interface names from a `class_interface_clause` node.
|
|
140
|
+
* Mirrors `parseBaseClause` but strips the `implements` keyword.
|
|
141
|
+
*/
|
|
142
|
+
function parseInterfaceClause(clause) {
|
|
143
|
+
if (!clause)
|
|
144
|
+
return [];
|
|
145
|
+
const names = [];
|
|
146
|
+
for (const child of clause.namedChildren) {
|
|
147
|
+
if (child.type === "name" || child.type === "qualified_name") {
|
|
148
|
+
const text = child.text.trim();
|
|
149
|
+
if (text)
|
|
150
|
+
names.push(text);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (names.length === 0) {
|
|
154
|
+
const stripped = clause.text.replace(/^implements\s+/, "").trim();
|
|
155
|
+
if (stripped) {
|
|
156
|
+
for (const n of stripped.split(/\s*,\s*/)) {
|
|
157
|
+
if (n)
|
|
158
|
+
names.push(n);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return names;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Walk a class/trait body and collect the names of traits used via
|
|
166
|
+
* `use TraitName;` declarations. Returns FQ names as written.
|
|
167
|
+
*/
|
|
168
|
+
function collectTraitUses(body) {
|
|
169
|
+
if (!body)
|
|
170
|
+
return [];
|
|
171
|
+
const traits = [];
|
|
172
|
+
for (const child of body.namedChildren) {
|
|
173
|
+
if (child.type !== "use_declaration")
|
|
174
|
+
continue;
|
|
175
|
+
for (const grand of child.namedChildren) {
|
|
176
|
+
if (grand.type === "name" || grand.type === "qualified_name") {
|
|
177
|
+
const t = grand.text.trim();
|
|
178
|
+
if (t)
|
|
179
|
+
traits.push(t);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return traits;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Look at a class/method/property declaration's children for modifier nodes.
|
|
187
|
+
* tree-sitter-php emits these as siblings of the name, with types like
|
|
188
|
+
* `abstract_modifier`, `final_modifier`, `readonly_modifier`, `static_modifier`,
|
|
189
|
+
* and `visibility_modifier`. Returns a set of plain string flags.
|
|
190
|
+
*/
|
|
191
|
+
function collectModifiers(node) {
|
|
192
|
+
const out = {};
|
|
90
193
|
for (const child of node.namedChildren) {
|
|
91
|
-
|
|
92
|
-
|
|
194
|
+
const t = child.type;
|
|
195
|
+
if (t === "visibility_modifier") {
|
|
196
|
+
const txt = child.text.trim();
|
|
197
|
+
if (txt === "public" || txt === "private" || txt === "protected") {
|
|
198
|
+
out.visibility = txt;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else if (t === "static_modifier" || (t === "modifier" && child.text === "static")) {
|
|
202
|
+
out.is_static = true;
|
|
203
|
+
}
|
|
204
|
+
else if (t === "abstract_modifier" || (t === "modifier" && child.text === "abstract")) {
|
|
205
|
+
out.is_abstract = true;
|
|
206
|
+
}
|
|
207
|
+
else if (t === "final_modifier" || (t === "modifier" && child.text === "final")) {
|
|
208
|
+
out.is_final = true;
|
|
209
|
+
}
|
|
210
|
+
else if (t === "readonly_modifier" || (t === "modifier" && child.text === "readonly")) {
|
|
211
|
+
out.is_readonly = true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return out;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Extract PHP 8.0+ attribute list from a declaration. Attributes appear as
|
|
218
|
+
* an `attribute_list` named child preceding the declaration; each contains
|
|
219
|
+
* one or more `attribute_group` → `attribute` nodes.
|
|
220
|
+
*
|
|
221
|
+
* Returns shape suitable for storing in `meta.attributes`:
|
|
222
|
+
* #[Route('/api', methods: ['GET'])] → { name: "Route", args: "'/api', methods: ['GET']" }
|
|
223
|
+
*/
|
|
224
|
+
function parseAttributes(node) {
|
|
225
|
+
const attrs = [];
|
|
226
|
+
// Attributes precede the decl as a sibling; we walk the immediate previous
|
|
227
|
+
// siblings until we hit something that is not an attribute_list.
|
|
228
|
+
let prev = node.previousNamedSibling;
|
|
229
|
+
while (prev && prev.type === "attribute_list") {
|
|
230
|
+
walkAttributeList(prev, attrs);
|
|
231
|
+
prev = prev.previousNamedSibling;
|
|
232
|
+
}
|
|
233
|
+
// tree-sitter-php sometimes nests attribute_list as a named child of the
|
|
234
|
+
// declaration itself. Collect those too.
|
|
235
|
+
for (const child of node.namedChildren) {
|
|
236
|
+
if (child.type === "attribute_list") {
|
|
237
|
+
walkAttributeList(child, attrs);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return attrs;
|
|
241
|
+
}
|
|
242
|
+
function walkAttributeList(list, out) {
|
|
243
|
+
for (const group of list.namedChildren) {
|
|
244
|
+
if (group.type !== "attribute_group" && group.type !== "attribute")
|
|
245
|
+
continue;
|
|
246
|
+
const attrNodes = group.type === "attribute_group"
|
|
247
|
+
? group.namedChildren.filter((c) => c.type === "attribute")
|
|
248
|
+
: [group];
|
|
249
|
+
for (const attr of attrNodes) {
|
|
250
|
+
// attribute → name + optional arguments
|
|
251
|
+
const nameNode = attr.namedChildren.find((c) => c.type === "name" || c.type === "qualified_name");
|
|
252
|
+
if (!nameNode)
|
|
253
|
+
continue;
|
|
254
|
+
const argsNode = attr.namedChildren.find((c) => c.type === "arguments");
|
|
255
|
+
const entry = { name: nameNode.text };
|
|
256
|
+
if (argsNode) {
|
|
257
|
+
// Strip outer parens, trim — keep raw arg list as a string for cheap
|
|
258
|
+
// pattern matching downstream (no need to AST-walk every literal).
|
|
259
|
+
entry.args = argsNode.text.replace(/^\(/, "").replace(/\)$/, "").trim();
|
|
260
|
+
}
|
|
261
|
+
out.push(entry);
|
|
93
262
|
}
|
|
94
263
|
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Check if a class extends a known test-runner base class. Covers both
|
|
267
|
+
* PHPUnit (`TestCase`) and Codeception (`Unit`, `Cest`, `Cept`). Match is
|
|
268
|
+
* substring-based on the last name segment so namespace prefixes don't
|
|
269
|
+
* matter (e.g. `Codeception\\Test\\Unit` ends with `Unit`).
|
|
270
|
+
*/
|
|
271
|
+
function isTestCaseClass(node) {
|
|
272
|
+
const bases = collectClassExtends(node);
|
|
273
|
+
for (const b of bases) {
|
|
274
|
+
const last = b.split(/[\\\\]+/).pop() ?? "";
|
|
275
|
+
if (TEST_BASE_NAMES.has(last))
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
95
278
|
return false;
|
|
96
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Helper: read the `extends` list from a class_declaration node, regardless
|
|
282
|
+
* of whether the parser exposes it via `childForFieldName("base_clause")`
|
|
283
|
+
* or as a named child of type `base_clause`.
|
|
284
|
+
*/
|
|
285
|
+
function collectClassExtends(node) {
|
|
286
|
+
let baseClause = node.childForFieldName("base_clause");
|
|
287
|
+
if (!baseClause) {
|
|
288
|
+
baseClause = node.namedChildren.find((c) => c.type === "base_clause") ?? null;
|
|
289
|
+
}
|
|
290
|
+
return parseBaseClause(baseClause);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Helper: read the `implements` list from a class_declaration node.
|
|
294
|
+
*/
|
|
295
|
+
function collectClassImplements(node) {
|
|
296
|
+
let clause = node.childForFieldName("class_interface_clause");
|
|
297
|
+
if (!clause) {
|
|
298
|
+
clause =
|
|
299
|
+
node.namedChildren.find((c) => c.type === "class_interface_clause") ??
|
|
300
|
+
null;
|
|
301
|
+
}
|
|
302
|
+
return parseInterfaceClause(clause);
|
|
303
|
+
}
|
|
97
304
|
/**
|
|
98
305
|
* Classify a method declaration based on PHPUnit patterns.
|
|
99
306
|
*/
|
|
@@ -129,6 +336,65 @@ function getPropertyName(node) {
|
|
|
129
336
|
}
|
|
130
337
|
return null;
|
|
131
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* Pull a type annotation off a property_declaration / parameter / promoted
|
|
341
|
+
* parameter node. Walks named children looking for the first type-bearing
|
|
342
|
+
* node. Returns the raw source text exactly as written.
|
|
343
|
+
*
|
|
344
|
+
* Type-bearing node types in tree-sitter-php:
|
|
345
|
+
* primitive_type (string, int, bool, float, array, mixed, void, ...)
|
|
346
|
+
* named_type (User, \\App\\Model)
|
|
347
|
+
* optional_type (?T) — wraps the inner type
|
|
348
|
+
* union_type (PHP 8.0+: A|B)
|
|
349
|
+
* intersection_type (PHP 8.1+: A&B)
|
|
350
|
+
* disjunctive_normal_form_type (PHP 8.2+: (A&B)|C)
|
|
351
|
+
*/
|
|
352
|
+
function getInlineType(node) {
|
|
353
|
+
const TYPE_NODES = new Set([
|
|
354
|
+
"primitive_type",
|
|
355
|
+
"named_type",
|
|
356
|
+
"optional_type",
|
|
357
|
+
"union_type",
|
|
358
|
+
"intersection_type",
|
|
359
|
+
"disjunctive_normal_form_type",
|
|
360
|
+
]);
|
|
361
|
+
for (const child of node.namedChildren) {
|
|
362
|
+
if (TYPE_NODES.has(child.type)) {
|
|
363
|
+
return child.text.trim();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Build a Property metadata object from a property_declaration node.
|
|
370
|
+
* Combines inline type (PHP 7.4+ typed property) with `@var T` from a
|
|
371
|
+
* leading PHPDoc block. Inline type takes precedence; `@var` is used when
|
|
372
|
+
* inline type is absent (legacy 7.2/7.3 code).
|
|
373
|
+
*/
|
|
374
|
+
function buildPropertyMeta(node, docstring) {
|
|
375
|
+
const meta = {};
|
|
376
|
+
const modifiers = collectModifiers(node);
|
|
377
|
+
if (modifiers.visibility)
|
|
378
|
+
meta.visibility = modifiers.visibility;
|
|
379
|
+
if (modifiers.is_static)
|
|
380
|
+
meta.is_static = true;
|
|
381
|
+
if (modifiers.is_readonly)
|
|
382
|
+
meta.is_readonly = true;
|
|
383
|
+
const inlineType = getInlineType(node);
|
|
384
|
+
const docVar = parsePhpDocVar(docstring);
|
|
385
|
+
if (inlineType) {
|
|
386
|
+
meta.type = inlineType;
|
|
387
|
+
meta.type_source = "inline";
|
|
388
|
+
}
|
|
389
|
+
else if (docVar) {
|
|
390
|
+
meta.type = docVar;
|
|
391
|
+
meta.type_source = "phpdoc";
|
|
392
|
+
}
|
|
393
|
+
const attrs = parseAttributes(node);
|
|
394
|
+
if (attrs.length > 0)
|
|
395
|
+
meta.attributes = attrs;
|
|
396
|
+
return meta;
|
|
397
|
+
}
|
|
132
398
|
// --- Main extractor ---
|
|
133
399
|
export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
134
400
|
const symbols = [];
|
|
@@ -160,6 +426,54 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
160
426
|
symbols.push(synthetic);
|
|
161
427
|
}
|
|
162
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Emit synthetic `field` symbols for PHP 8.0+ promoted constructor params.
|
|
431
|
+
*
|
|
432
|
+
* Promoted ctor params (`public readonly string $name` inside a __construct
|
|
433
|
+
* signature) are real properties at runtime, but the property has no
|
|
434
|
+
* separate `property_declaration` in the class body — only the parameter
|
|
435
|
+
* inside `formal_parameters`. Without this, downstream tools see a class
|
|
436
|
+
* with N parameters in its ctor and think the class has 0 properties.
|
|
437
|
+
*
|
|
438
|
+
* Each emitted symbol carries `meta.from_constructor: true` so callers
|
|
439
|
+
* (e.g. analyzeActiveRecord, find_php_god_model) can distinguish promoted
|
|
440
|
+
* fields from declared ones if they need to.
|
|
441
|
+
*/
|
|
442
|
+
function emitPromotedCtorFields(methodNode, classId) {
|
|
443
|
+
const params = methodNode.childForFieldName("parameters")
|
|
444
|
+
?? methodNode.namedChildren.find((c) => c.type === "formal_parameters");
|
|
445
|
+
if (!params)
|
|
446
|
+
return;
|
|
447
|
+
for (const child of params.namedChildren) {
|
|
448
|
+
if (child.type !== "property_promotion_parameter")
|
|
449
|
+
continue;
|
|
450
|
+
const varName = child.namedChildren.find((c) => c.type === "variable_name");
|
|
451
|
+
if (!varName)
|
|
452
|
+
continue;
|
|
453
|
+
const nameNode = varName.namedChildren.find((c) => c.type === "name");
|
|
454
|
+
if (!nameNode)
|
|
455
|
+
continue;
|
|
456
|
+
const propName = "$" + nameNode.text;
|
|
457
|
+
const modifiers = collectModifiers(child);
|
|
458
|
+
const inlineType = getInlineType(child);
|
|
459
|
+
const attrs = parseAttributes(child);
|
|
460
|
+
const meta = { from_constructor: true };
|
|
461
|
+
if (modifiers.visibility)
|
|
462
|
+
meta.visibility = modifiers.visibility;
|
|
463
|
+
if (modifiers.is_readonly)
|
|
464
|
+
meta.is_readonly = true;
|
|
465
|
+
if (inlineType) {
|
|
466
|
+
meta.type = inlineType;
|
|
467
|
+
meta.type_source = "inline";
|
|
468
|
+
}
|
|
469
|
+
if (attrs.length > 0)
|
|
470
|
+
meta.attributes = attrs;
|
|
471
|
+
symbols.push(makeSymbol(child, propName, "field", filePath, source, repo, {
|
|
472
|
+
parentId: classId,
|
|
473
|
+
meta,
|
|
474
|
+
}));
|
|
475
|
+
}
|
|
476
|
+
}
|
|
163
477
|
function walk(node, parentId, parentIsTest = false) {
|
|
164
478
|
switch (node.type) {
|
|
165
479
|
case "namespace_definition": {
|
|
@@ -189,14 +503,37 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
189
503
|
const isTest = isTestCaseClass(node);
|
|
190
504
|
const kind = isTest ? "test_suite" : "class";
|
|
191
505
|
const docstring = getDocstring(node, source);
|
|
192
|
-
const
|
|
506
|
+
const extendsList = collectClassExtends(node);
|
|
507
|
+
const implementsList = collectClassImplements(node);
|
|
508
|
+
const body = node.childForFieldName("body");
|
|
509
|
+
const traitUses = collectTraitUses(body);
|
|
510
|
+
const modifiers = collectModifiers(node);
|
|
511
|
+
const attributes = parseAttributes(node);
|
|
512
|
+
const meta = {};
|
|
513
|
+
if (modifiers.is_abstract)
|
|
514
|
+
meta.is_abstract = true;
|
|
515
|
+
if (modifiers.is_final)
|
|
516
|
+
meta.is_final = true;
|
|
517
|
+
if (modifiers.is_readonly)
|
|
518
|
+
meta.is_readonly = true;
|
|
519
|
+
if (traitUses.length > 0)
|
|
520
|
+
meta.uses_traits = traitUses;
|
|
521
|
+
if (attributes.length > 0)
|
|
522
|
+
meta.attributes = attributes;
|
|
523
|
+
const opts = {
|
|
193
524
|
parentId,
|
|
194
525
|
docstring,
|
|
195
|
-
}
|
|
526
|
+
};
|
|
527
|
+
if (extendsList.length > 0)
|
|
528
|
+
opts.extends = extendsList;
|
|
529
|
+
if (implementsList.length > 0)
|
|
530
|
+
opts.implements = implementsList;
|
|
531
|
+
if (Object.keys(meta).length > 0)
|
|
532
|
+
opts.meta = meta;
|
|
533
|
+
const sym = makeSymbol(node, name, kind, filePath, source, repo, opts);
|
|
196
534
|
symbols.push(sym);
|
|
197
535
|
// Walk class body FIRST so real methods/fields are in `symbols`
|
|
198
536
|
// before dedup runs for synthetic @property/@method tags.
|
|
199
|
-
const body = node.childForFieldName("body");
|
|
200
537
|
if (body) {
|
|
201
538
|
for (const child of body.namedChildren) {
|
|
202
539
|
walk(child, sym.id, isTest);
|
|
@@ -208,10 +545,20 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
208
545
|
case "interface_declaration": {
|
|
209
546
|
const name = getNodeName(node) ?? "<anonymous>";
|
|
210
547
|
const docstring = getDocstring(node, source);
|
|
211
|
-
const
|
|
548
|
+
const extendsList = collectClassExtends(node);
|
|
549
|
+
const attributes = parseAttributes(node);
|
|
550
|
+
const meta = {};
|
|
551
|
+
if (attributes.length > 0)
|
|
552
|
+
meta.attributes = attributes;
|
|
553
|
+
const opts = {
|
|
212
554
|
parentId,
|
|
213
555
|
docstring,
|
|
214
|
-
}
|
|
556
|
+
};
|
|
557
|
+
if (extendsList.length > 0)
|
|
558
|
+
opts.extends = extendsList;
|
|
559
|
+
if (Object.keys(meta).length > 0)
|
|
560
|
+
opts.meta = meta;
|
|
561
|
+
const sym = makeSymbol(node, name, "interface", filePath, source, repo, opts);
|
|
215
562
|
symbols.push(sym);
|
|
216
563
|
const body = node.childForFieldName("body");
|
|
217
564
|
if (body) {
|
|
@@ -225,12 +572,22 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
225
572
|
case "trait_declaration": {
|
|
226
573
|
const name = getNodeName(node) ?? "<anonymous>";
|
|
227
574
|
const docstring = getDocstring(node, source);
|
|
228
|
-
const
|
|
575
|
+
const body = node.childForFieldName("body");
|
|
576
|
+
const traitUses = collectTraitUses(body);
|
|
577
|
+
const attributes = parseAttributes(node);
|
|
578
|
+
const meta = {};
|
|
579
|
+
if (traitUses.length > 0)
|
|
580
|
+
meta.uses_traits = traitUses;
|
|
581
|
+
if (attributes.length > 0)
|
|
582
|
+
meta.attributes = attributes;
|
|
583
|
+
const opts = {
|
|
229
584
|
parentId,
|
|
230
585
|
docstring,
|
|
231
|
-
}
|
|
586
|
+
};
|
|
587
|
+
if (Object.keys(meta).length > 0)
|
|
588
|
+
opts.meta = meta;
|
|
589
|
+
const sym = makeSymbol(node, name, "type", filePath, source, repo, opts);
|
|
232
590
|
symbols.push(sym);
|
|
233
|
-
const body = node.childForFieldName("body");
|
|
234
591
|
if (body) {
|
|
235
592
|
for (const child of body.namedChildren) {
|
|
236
593
|
walk(child, sym.id, false);
|
|
@@ -241,12 +598,42 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
241
598
|
}
|
|
242
599
|
case "enum_declaration": {
|
|
243
600
|
const name = getNodeName(node) ?? "<anonymous>";
|
|
244
|
-
|
|
601
|
+
// PHP 8.1 backed enum: `enum Status: string {…}`. The backing type
|
|
602
|
+
// appears as a `primitive_type` direct child of enum_declaration,
|
|
603
|
+
// sitting between the name and the body. Capture it so downstream
|
|
604
|
+
// tools (e.g. M1 enum-from-class-consts migration assist) can tell
|
|
605
|
+
// backed from pure enums.
|
|
606
|
+
let backedType;
|
|
607
|
+
for (const child of node.namedChildren) {
|
|
608
|
+
if (child.type === "primitive_type") {
|
|
609
|
+
backedType = child.text.trim();
|
|
610
|
+
break;
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
// PHP 8.1 enums can implement interfaces too.
|
|
614
|
+
const implementsList = collectClassImplements(node);
|
|
615
|
+
const attributes = parseAttributes(node);
|
|
616
|
+
const meta = {};
|
|
617
|
+
if (backedType)
|
|
618
|
+
meta.backed_type = backedType;
|
|
619
|
+
if (attributes.length > 0)
|
|
620
|
+
meta.attributes = attributes;
|
|
621
|
+
const opts = {
|
|
245
622
|
parentId,
|
|
246
623
|
docstring: getDocstring(node, source),
|
|
247
|
-
}
|
|
624
|
+
};
|
|
625
|
+
if (implementsList.length > 0)
|
|
626
|
+
opts.implements = implementsList;
|
|
627
|
+
if (Object.keys(meta).length > 0)
|
|
628
|
+
opts.meta = meta;
|
|
629
|
+
const sym = makeSymbol(node, name, "enum", filePath, source, repo, opts);
|
|
248
630
|
symbols.push(sym);
|
|
249
|
-
|
|
631
|
+
// tree-sitter-php uses `enum_declaration_list` for the body container,
|
|
632
|
+
// not `body`. Try field name first for forward-compat, fall back to
|
|
633
|
+
// the named child lookup.
|
|
634
|
+
const body = node.childForFieldName("body") ??
|
|
635
|
+
node.namedChildren.find((c) => c.type === "enum_declaration_list") ??
|
|
636
|
+
null;
|
|
250
637
|
if (body) {
|
|
251
638
|
for (const child of body.namedChildren) {
|
|
252
639
|
walk(child, sym.id, false);
|
|
@@ -271,22 +658,49 @@ export function extractPhpSymbols(tree, filePath, source, repo) {
|
|
|
271
658
|
if (name) {
|
|
272
659
|
const docstring = getDocstring(node, source);
|
|
273
660
|
const kind = classifyMethod(name, parentIsTest, docstring);
|
|
274
|
-
const
|
|
661
|
+
const modifiers = collectModifiers(node);
|
|
662
|
+
const attributes = parseAttributes(node);
|
|
663
|
+
const meta = {};
|
|
664
|
+
if (modifiers.visibility)
|
|
665
|
+
meta.visibility = modifiers.visibility;
|
|
666
|
+
if (modifiers.is_static)
|
|
667
|
+
meta.is_static = true;
|
|
668
|
+
if (modifiers.is_abstract)
|
|
669
|
+
meta.is_abstract = true;
|
|
670
|
+
if (modifiers.is_final)
|
|
671
|
+
meta.is_final = true;
|
|
672
|
+
if (attributes.length > 0)
|
|
673
|
+
meta.attributes = attributes;
|
|
674
|
+
const opts = {
|
|
275
675
|
parentId,
|
|
276
676
|
docstring,
|
|
277
677
|
signature: getSignature(node, source),
|
|
278
|
-
}
|
|
678
|
+
};
|
|
679
|
+
if (Object.keys(meta).length > 0)
|
|
680
|
+
opts.meta = meta;
|
|
681
|
+
const sym = makeSymbol(node, name, kind, filePath, source, repo, opts);
|
|
279
682
|
symbols.push(sym);
|
|
683
|
+
// Promoted constructor params (PHP 8.0+): the body has no field
|
|
684
|
+
// declarations for these, so synthesize them as `field` symbols
|
|
685
|
+
// attached to the parent class. Only fires for __construct.
|
|
686
|
+
if (name === "__construct" && parentId) {
|
|
687
|
+
emitPromotedCtorFields(node, parentId);
|
|
688
|
+
}
|
|
280
689
|
}
|
|
281
690
|
return;
|
|
282
691
|
}
|
|
283
692
|
case "property_declaration": {
|
|
284
693
|
const propName = getPropertyName(node);
|
|
285
694
|
if (propName) {
|
|
286
|
-
const
|
|
695
|
+
const docstring = getDocstring(node, source);
|
|
696
|
+
const meta = buildPropertyMeta(node, docstring);
|
|
697
|
+
const opts = {
|
|
287
698
|
parentId,
|
|
288
|
-
docstring
|
|
289
|
-
}
|
|
699
|
+
docstring,
|
|
700
|
+
};
|
|
701
|
+
if (Object.keys(meta).length > 0)
|
|
702
|
+
opts.meta = meta;
|
|
703
|
+
const sym = makeSymbol(node, propName, "field", filePath, source, repo, opts);
|
|
290
704
|
symbols.push(sym);
|
|
291
705
|
}
|
|
292
706
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/parser/extractors/php.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/parser/extractors/php.ts"],"names":[],"mappings":"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"}
|
|
@@ -383,12 +383,11 @@ export function extractPythonSymbols(tree, filePath, source, repo) {
|
|
|
383
383
|
const message = err instanceof Error ? err.message : String(err);
|
|
384
384
|
console.warn(`[python-extractor] walk failed for ${filePath} (${symbols.length} symbols collected, partial): ${message}`);
|
|
385
385
|
}
|
|
386
|
-
// Tag partial results so
|
|
386
|
+
// Tag partial results on every symbol so metadata is not arbitrary (first-row only)
|
|
387
387
|
if (partial && symbols.length > 0) {
|
|
388
|
-
const
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
first.meta.partial_extraction = true;
|
|
388
|
+
for (const sym of symbols) {
|
|
389
|
+
sym.meta = { ...(sym.meta ?? {}), partial_extraction: true };
|
|
390
|
+
}
|
|
392
391
|
}
|
|
393
392
|
return symbols;
|
|
394
393
|
}
|