@colbymchenry/codegraph-darwin-x64 0.9.3 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/lib/dist/bin/codegraph.d.ts +3 -0
  2. package/lib/dist/bin/codegraph.d.ts.map +1 -1
  3. package/lib/dist/bin/codegraph.js +250 -0
  4. package/lib/dist/bin/codegraph.js.map +1 -1
  5. package/lib/dist/context/index.d.ts +13 -0
  6. package/lib/dist/context/index.d.ts.map +1 -1
  7. package/lib/dist/context/index.js +120 -1
  8. package/lib/dist/context/index.js.map +1 -1
  9. package/lib/dist/db/index.d.ts +18 -0
  10. package/lib/dist/db/index.d.ts.map +1 -1
  11. package/lib/dist/db/index.js +31 -0
  12. package/lib/dist/db/index.js.map +1 -1
  13. package/lib/dist/db/queries.d.ts +16 -0
  14. package/lib/dist/db/queries.d.ts.map +1 -1
  15. package/lib/dist/db/queries.js +80 -27
  16. package/lib/dist/db/queries.js.map +1 -1
  17. package/lib/dist/extraction/grammars.d.ts +6 -0
  18. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  19. package/lib/dist/extraction/grammars.js +31 -1
  20. package/lib/dist/extraction/grammars.js.map +1 -1
  21. package/lib/dist/extraction/index.d.ts +15 -2
  22. package/lib/dist/extraction/index.d.ts.map +1 -1
  23. package/lib/dist/extraction/index.js +170 -78
  24. package/lib/dist/extraction/index.js.map +1 -1
  25. package/lib/dist/extraction/languages/index.d.ts.map +1 -1
  26. package/lib/dist/extraction/languages/index.js +2 -0
  27. package/lib/dist/extraction/languages/index.js.map +1 -1
  28. package/lib/dist/extraction/languages/objc.d.ts +3 -0
  29. package/lib/dist/extraction/languages/objc.d.ts.map +1 -0
  30. package/lib/dist/extraction/languages/objc.js +133 -0
  31. package/lib/dist/extraction/languages/objc.js.map +1 -0
  32. package/lib/dist/extraction/tree-sitter-types.d.ts +4 -0
  33. package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  34. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  35. package/lib/dist/extraction/tree-sitter.js +155 -9
  36. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  37. package/lib/dist/extraction/wasm-runtime-flags.d.ts +12 -0
  38. package/lib/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
  39. package/lib/dist/extraction/wasm-runtime-flags.js +14 -2
  40. package/lib/dist/extraction/wasm-runtime-flags.js.map +1 -1
  41. package/lib/dist/graph/traversal.d.ts.map +1 -1
  42. package/lib/dist/graph/traversal.js +71 -36
  43. package/lib/dist/graph/traversal.js.map +1 -1
  44. package/lib/dist/index.d.ts +21 -2
  45. package/lib/dist/index.d.ts.map +1 -1
  46. package/lib/dist/index.js +42 -0
  47. package/lib/dist/index.js.map +1 -1
  48. package/lib/dist/installer/instructions-template.d.ts +2 -2
  49. package/lib/dist/installer/instructions-template.d.ts.map +1 -1
  50. package/lib/dist/installer/instructions-template.js +3 -2
  51. package/lib/dist/installer/instructions-template.js.map +1 -1
  52. package/lib/dist/mcp/daemon-paths.d.ts +46 -0
  53. package/lib/dist/mcp/daemon-paths.d.ts.map +1 -0
  54. package/lib/dist/mcp/daemon-paths.js +125 -0
  55. package/lib/dist/mcp/daemon-paths.js.map +1 -0
  56. package/lib/dist/mcp/daemon.d.ts +161 -0
  57. package/lib/dist/mcp/daemon.d.ts.map +1 -0
  58. package/lib/dist/mcp/daemon.js +403 -0
  59. package/lib/dist/mcp/daemon.js.map +1 -0
  60. package/lib/dist/mcp/engine.d.ts +100 -0
  61. package/lib/dist/mcp/engine.d.ts.map +1 -0
  62. package/lib/dist/mcp/engine.js +291 -0
  63. package/lib/dist/mcp/engine.js.map +1 -0
  64. package/lib/dist/mcp/index.d.ts +67 -52
  65. package/lib/dist/mcp/index.d.ts.map +1 -1
  66. package/lib/dist/mcp/index.js +347 -330
  67. package/lib/dist/mcp/index.js.map +1 -1
  68. package/lib/dist/mcp/proxy.d.ts +46 -0
  69. package/lib/dist/mcp/proxy.d.ts.map +1 -0
  70. package/lib/dist/mcp/proxy.js +276 -0
  71. package/lib/dist/mcp/proxy.js.map +1 -0
  72. package/lib/dist/mcp/server-instructions.d.ts +1 -1
  73. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  74. package/lib/dist/mcp/server-instructions.js +3 -1
  75. package/lib/dist/mcp/server-instructions.js.map +1 -1
  76. package/lib/dist/mcp/session.d.ts +67 -0
  77. package/lib/dist/mcp/session.d.ts.map +1 -0
  78. package/lib/dist/mcp/session.js +276 -0
  79. package/lib/dist/mcp/session.js.map +1 -0
  80. package/lib/dist/mcp/tools.d.ts +130 -2
  81. package/lib/dist/mcp/tools.d.ts.map +1 -1
  82. package/lib/dist/mcp/tools.js +902 -37
  83. package/lib/dist/mcp/tools.js.map +1 -1
  84. package/lib/dist/mcp/transport.d.ts +111 -29
  85. package/lib/dist/mcp/transport.d.ts.map +1 -1
  86. package/lib/dist/mcp/transport.js +181 -71
  87. package/lib/dist/mcp/transport.js.map +1 -1
  88. package/lib/dist/mcp/version.d.ts +19 -0
  89. package/lib/dist/mcp/version.d.ts.map +1 -0
  90. package/lib/dist/mcp/version.js +71 -0
  91. package/lib/dist/mcp/version.js.map +1 -0
  92. package/lib/dist/resolution/callback-synthesizer.d.ts +10 -0
  93. package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  94. package/lib/dist/resolution/callback-synthesizer.js +847 -0
  95. package/lib/dist/resolution/callback-synthesizer.js.map +1 -0
  96. package/lib/dist/resolution/frameworks/csharp.d.ts.map +1 -1
  97. package/lib/dist/resolution/frameworks/csharp.js +36 -8
  98. package/lib/dist/resolution/frameworks/csharp.js.map +1 -1
  99. package/lib/dist/resolution/frameworks/drupal.d.ts.map +1 -1
  100. package/lib/dist/resolution/frameworks/drupal.js +44 -12
  101. package/lib/dist/resolution/frameworks/drupal.js.map +1 -1
  102. package/lib/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  103. package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  104. package/lib/dist/resolution/frameworks/expo-modules.js +143 -0
  105. package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -0
  106. package/lib/dist/resolution/frameworks/express.d.ts.map +1 -1
  107. package/lib/dist/resolution/frameworks/express.js +102 -19
  108. package/lib/dist/resolution/frameworks/express.js.map +1 -1
  109. package/lib/dist/resolution/frameworks/fabric.d.ts +3 -0
  110. package/lib/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  111. package/lib/dist/resolution/frameworks/fabric.js +354 -0
  112. package/lib/dist/resolution/frameworks/fabric.js.map +1 -0
  113. package/lib/dist/resolution/frameworks/go.d.ts.map +1 -1
  114. package/lib/dist/resolution/frameworks/go.js +6 -3
  115. package/lib/dist/resolution/frameworks/go.js.map +1 -1
  116. package/lib/dist/resolution/frameworks/index.d.ts +5 -0
  117. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  118. package/lib/dist/resolution/frameworks/index.js +25 -1
  119. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  120. package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
  121. package/lib/dist/resolution/frameworks/java.js +70 -12
  122. package/lib/dist/resolution/frameworks/java.js.map +1 -1
  123. package/lib/dist/resolution/frameworks/laravel.d.ts.map +1 -1
  124. package/lib/dist/resolution/frameworks/laravel.js +17 -8
  125. package/lib/dist/resolution/frameworks/laravel.js.map +1 -1
  126. package/lib/dist/resolution/frameworks/play.d.ts +19 -0
  127. package/lib/dist/resolution/frameworks/play.d.ts.map +1 -0
  128. package/lib/dist/resolution/frameworks/play.js +111 -0
  129. package/lib/dist/resolution/frameworks/play.js.map +1 -0
  130. package/lib/dist/resolution/frameworks/python.d.ts.map +1 -1
  131. package/lib/dist/resolution/frameworks/python.js +134 -16
  132. package/lib/dist/resolution/frameworks/python.js.map +1 -1
  133. package/lib/dist/resolution/frameworks/react-native.d.ts +3 -0
  134. package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  135. package/lib/dist/resolution/frameworks/react-native.js +360 -0
  136. package/lib/dist/resolution/frameworks/react-native.js.map +1 -0
  137. package/lib/dist/resolution/frameworks/react.d.ts.map +1 -1
  138. package/lib/dist/resolution/frameworks/react.js +96 -3
  139. package/lib/dist/resolution/frameworks/react.js.map +1 -1
  140. package/lib/dist/resolution/frameworks/ruby.d.ts.map +1 -1
  141. package/lib/dist/resolution/frameworks/ruby.js +106 -2
  142. package/lib/dist/resolution/frameworks/ruby.js.map +1 -1
  143. package/lib/dist/resolution/frameworks/rust.d.ts.map +1 -1
  144. package/lib/dist/resolution/frameworks/rust.js +102 -5
  145. package/lib/dist/resolution/frameworks/rust.js.map +1 -1
  146. package/lib/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  147. package/lib/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  148. package/lib/dist/resolution/frameworks/swift-objc.js +252 -0
  149. package/lib/dist/resolution/frameworks/swift-objc.js.map +1 -0
  150. package/lib/dist/resolution/frameworks/swift.d.ts.map +1 -1
  151. package/lib/dist/resolution/frameworks/swift.js +30 -6
  152. package/lib/dist/resolution/frameworks/swift.js.map +1 -1
  153. package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
  154. package/lib/dist/resolution/import-resolver.js +1 -0
  155. package/lib/dist/resolution/import-resolver.js.map +1 -1
  156. package/lib/dist/resolution/index.d.ts.map +1 -1
  157. package/lib/dist/resolution/index.js +61 -9
  158. package/lib/dist/resolution/index.js.map +1 -1
  159. package/lib/dist/resolution/lru-cache.d.ts +24 -0
  160. package/lib/dist/resolution/lru-cache.d.ts.map +1 -0
  161. package/lib/dist/resolution/lru-cache.js +62 -0
  162. package/lib/dist/resolution/lru-cache.js.map +1 -0
  163. package/lib/dist/resolution/swift-objc-bridge.d.ts +134 -0
  164. package/lib/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  165. package/lib/dist/resolution/swift-objc-bridge.js +256 -0
  166. package/lib/dist/resolution/swift-objc-bridge.js.map +1 -0
  167. package/lib/dist/resolution/types.d.ts +8 -0
  168. package/lib/dist/resolution/types.d.ts.map +1 -1
  169. package/lib/dist/sync/index.d.ts +3 -1
  170. package/lib/dist/sync/index.d.ts.map +1 -1
  171. package/lib/dist/sync/index.js +7 -1
  172. package/lib/dist/sync/index.js.map +1 -1
  173. package/lib/dist/sync/watcher.d.ts +109 -7
  174. package/lib/dist/sync/watcher.d.ts.map +1 -1
  175. package/lib/dist/sync/watcher.js +215 -33
  176. package/lib/dist/sync/watcher.js.map +1 -1
  177. package/lib/dist/sync/worktree.d.ts +54 -0
  178. package/lib/dist/sync/worktree.d.ts.map +1 -0
  179. package/lib/dist/sync/worktree.js +136 -0
  180. package/lib/dist/sync/worktree.js.map +1 -0
  181. package/lib/dist/types.d.ts +1 -1
  182. package/lib/dist/types.d.ts.map +1 -1
  183. package/lib/dist/types.js +1 -0
  184. package/lib/dist/types.js.map +1 -1
  185. package/lib/dist/utils.js +1 -1
  186. package/lib/node_modules/.package-lock.json +29 -1
  187. package/lib/node_modules/chokidar/LICENSE +21 -0
  188. package/lib/node_modules/chokidar/README.md +305 -0
  189. package/lib/node_modules/chokidar/esm/handler.d.ts +90 -0
  190. package/lib/node_modules/chokidar/esm/handler.js +629 -0
  191. package/lib/node_modules/chokidar/esm/index.d.ts +215 -0
  192. package/lib/node_modules/chokidar/esm/index.js +798 -0
  193. package/lib/node_modules/chokidar/esm/package.json +1 -0
  194. package/lib/node_modules/chokidar/handler.d.ts +90 -0
  195. package/lib/node_modules/chokidar/handler.js +635 -0
  196. package/lib/node_modules/chokidar/index.d.ts +215 -0
  197. package/lib/node_modules/chokidar/index.js +804 -0
  198. package/lib/node_modules/chokidar/package.json +69 -0
  199. package/lib/node_modules/readdirp/LICENSE +21 -0
  200. package/lib/node_modules/readdirp/README.md +120 -0
  201. package/lib/node_modules/readdirp/esm/index.d.ts +108 -0
  202. package/lib/node_modules/readdirp/esm/index.js +257 -0
  203. package/lib/node_modules/readdirp/esm/package.json +1 -0
  204. package/lib/node_modules/readdirp/index.d.ts +108 -0
  205. package/lib/node_modules/readdirp/index.js +263 -0
  206. package/lib/node_modules/readdirp/package.json +70 -0
  207. package/lib/package.json +2 -1
  208. package/package.json +1 -1
@@ -38,8 +38,24 @@ exports.djangoResolver = {
38
38
  if (result)
39
39
  return { original: ref, targetNodeId: result, confidence: 0.8, resolvedBy: 'framework' };
40
40
  }
41
+ // ORM dynamic dispatch: QuerySet._fetch_all (and siblings) call
42
+ // `self._iterable_class(self)` — a runtime dispatch to the iterable class
43
+ // (default ModelIterable) whose __iter__ runs the SQL compiler. Static
44
+ // parsing can't resolve an attribute-as-callable, so it leaves an unresolved
45
+ // `_iterable_class` ref and a hole in the QuerySet→compiler chain. Bridge it
46
+ // to ModelIterable.__iter__ so the flow actually exists in the graph.
47
+ if (ref.referenceName === '_iterable_class') {
48
+ const target = resolveModelIterableIter(context);
49
+ if (target)
50
+ return { original: ref, targetNodeId: target, confidence: 0.7, resolvedBy: 'framework' };
51
+ }
41
52
  return null;
42
53
  },
54
+ // Let the ORM dynamic-dispatch ref reach resolve() despite no symbol being
55
+ // named `_iterable_class` (it's a QuerySet attribute, not a declared method).
56
+ claimsReference(name) {
57
+ return name === '_iterable_class';
58
+ },
43
59
  extract(filePath, content) {
44
60
  if (!filePath.endsWith('.py'))
45
61
  return { nodes: [], references: [] };
@@ -83,9 +99,51 @@ exports.djangoResolver = {
83
99
  });
84
100
  }
85
101
  }
102
+ // DRF router registration: `router.register(r'articles', ArticleViewSet)` →
103
+ // route → the ViewSet class (the core CRUD endpoints, which path()/url() miss).
104
+ // The STRING first arg separates this from `admin.site.register(Model, Admin)`
105
+ // (whose first arg is a model class, not a string); the View/ViewSet suffix on
106
+ // the 2nd arg keeps it to DRF viewsets.
107
+ const routerRegex = /\.register\s*\(\s*r?['"]([^'"]+)['"]\s*,\s*([\w.]+)/g;
108
+ while ((match = routerRegex.exec(safe)) !== null) {
109
+ const prefix = match[1].replace(/^\^|\/?\$$/g, '');
110
+ const viewset = match[2].split('.').pop();
111
+ if (!/View(Set)?$/.test(viewset))
112
+ continue;
113
+ const line = safe.slice(0, match.index).split('\n').length;
114
+ const routeNode = {
115
+ id: `route:${filePath}:${line}:VIEWSET:${prefix}`,
116
+ kind: 'route',
117
+ name: `VIEWSET /${prefix}`,
118
+ qualifiedName: `${filePath}::route:${prefix}`,
119
+ filePath, startLine: line, endLine: line, startColumn: 0, endColumn: match[0].length,
120
+ language: 'python', updatedAt: now,
121
+ };
122
+ nodes.push(routeNode);
123
+ references.push({
124
+ fromNodeId: routeNode.id,
125
+ referenceName: viewset,
126
+ referenceKind: 'references',
127
+ line, column: 0, filePath, language: 'python',
128
+ });
129
+ }
86
130
  return { nodes, references };
87
131
  },
88
132
  };
133
+ /**
134
+ * Find ModelIterable.__iter__ — the default iterable QuerySet invokes via
135
+ * `self._iterable_class(self)`. Its __iter__ statically calls the SQL compiler,
136
+ * so linking the dynamic dispatch here closes the QuerySet→SQL call chain.
137
+ * (Over-approximates to the default iterable; .values()/.values_list() swap in
138
+ * other BaseIterable subclasses, but ModelIterable is the canonical path.)
139
+ */
140
+ function resolveModelIterableIter(context) {
141
+ const cls = context.getNodesByName('ModelIterable').find((n) => n.kind === 'class');
142
+ if (!cls)
143
+ return null;
144
+ const iter = context.getNodesByName('__iter__').find((n) => n.filePath === cls.filePath && n.startLine >= cls.startLine && n.startLine <= cls.endLine);
145
+ return iter ? iter.id : null;
146
+ }
89
147
  /**
90
148
  * Parse a Django URL handler expression and return the symbol/module to link.
91
149
  * Returns null for shapes we can't confidently link (e.g. lambdas).
@@ -111,15 +169,21 @@ exports.flaskResolver = {
111
169
  name: 'flask',
112
170
  languages: ['python'],
113
171
  detect(context) {
114
- const requirements = context.readFile('requirements.txt');
115
- if (requirements && /\bflask\b/i.test(requirements))
116
- return true;
117
- const pyproject = context.readFile('pyproject.toml');
118
- if (pyproject && /\bflask\b/i.test(pyproject))
119
- return true;
120
- for (const file of ['app.py', 'application.py', 'main.py', '__init__.py']) {
121
- const content = context.readFile(file);
122
- if (content && content.includes('Flask(__name__)'))
172
+ for (const f of ['requirements.txt', 'pyproject.toml', 'Pipfile', 'setup.py']) {
173
+ const c = context.readFile(f);
174
+ if (c && /\bflask\b/i.test(c))
175
+ return true;
176
+ }
177
+ // Any app entrypoint (root OR subdir, e.g. conduit/app.py) that imports flask
178
+ // and instantiates Flask(...) covers Flask(__name__), Flask(__name__.split…),
179
+ // and the app-factory pattern. Bounded to entrypoint-named files.
180
+ const entrypoints = context
181
+ .getAllFiles()
182
+ .filter((f) => /(?:^|\/)(app|application|main|wsgi|__init__)\.py$/.test(f))
183
+ .slice(0, 50);
184
+ for (const f of entrypoints) {
185
+ const c = context.readFile(f);
186
+ if (c && /\bFlask\s*\(/.test(c) && /\bimport\s+flask\b|\bfrom\s+flask\b/.test(c))
123
187
  return true;
124
188
  }
125
189
  return false;
@@ -135,15 +199,23 @@ exports.flaskResolver = {
135
199
  extract(filePath, content) {
136
200
  if (!filePath.endsWith('.py'))
137
201
  return { nodes: [], references: [] };
138
- return extractDecoratorRoutes(filePath, (0, strip_comments_1.stripCommentsForRegex)(content, 'python'), {
139
- // Flask: @x.route('/path', methods=[...])
140
- decoratorRegex: /@(\w+)\.route\s*\(\s*['"]([^'"]+)['"](?:\s*,\s*methods\s*=\s*\[([^\]]+)\])?\s*\)\s*\n\s*(?:async\s+)?def\s+(\w+)/g,
202
+ const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'python');
203
+ const decorator = extractDecoratorRoutes(filePath, safe, {
204
+ // Flask: @x.route('/path', methods=[...] | (...)) — the handler is the next
205
+ // `def`, allowing intervening decorators (@login_required) and stacked
206
+ // @x.route() lines. methods may be a list OR a tuple (methods=('GET',)).
207
+ decoratorRegex: /@(\w+)\.route\s*\(\s*['"]([^'"]*)['"](?:\s*,\s*methods\s*=\s*[[(]([^\])]+)[\])])?\s*\)/g,
141
208
  defaultMethod: 'GET',
142
209
  methodFromGroup: 3,
143
210
  pathGroup: 2,
144
- handlerGroup: 4,
211
+ findHandler: true,
145
212
  language: 'python',
146
213
  });
214
+ const restful = extractFlaskRestful(filePath, safe);
215
+ return {
216
+ nodes: [...decorator.nodes, ...restful.nodes],
217
+ references: [...decorator.references, ...restful.references],
218
+ };
147
219
  },
148
220
  };
149
221
  exports.fastapiResolver = {
@@ -180,8 +252,9 @@ exports.fastapiResolver = {
180
252
  if (!filePath.endsWith('.py'))
181
253
  return { nodes: [], references: [] };
182
254
  return extractDecoratorRoutes(filePath, (0, strip_comments_1.stripCommentsForRegex)(content, 'python'), {
183
- // FastAPI: @x.METHOD('/path') -> handler on the next def line
184
- decoratorRegex: /@(\w+)\.(get|post|put|patch|delete|options|head)\s*\(\s*['"]([^'"]+)['"]/g,
255
+ // FastAPI: @x.METHOD('/path') -> handler on the next def line. Path may be
256
+ // empty ("") for routes mounted at the router/prefix root.
257
+ decoratorRegex: /@(\w+)\.(get|post|put|patch|delete|options|head)\s*\(\s*['"]([^'"]*)['"]/g,
185
258
  defaultMethod: '',
186
259
  methodGroup: 2,
187
260
  pathGroup: 3,
@@ -207,7 +280,7 @@ function extractDecoratorRoutes(filePath, content, opts) {
207
280
  method = m[1].toUpperCase();
208
281
  }
209
282
  const line = content.slice(0, match.index).split('\n').length;
210
- const name = method ? `${method} ${routePath}` : routePath;
283
+ const name = method ? `${method} ${routePath || '/'}` : (routePath || '/');
211
284
  const routeNode = {
212
285
  id: `route:${filePath}:${line}:${method}:${routePath}`,
213
286
  kind: 'route',
@@ -246,6 +319,51 @@ function extractDecoratorRoutes(filePath, content, opts) {
246
319
  }
247
320
  return { nodes, references };
248
321
  }
322
+ /**
323
+ * Flask-RESTful: `api.add_resource(ResourceClass, '/path'[, '/path2'])`
324
+ * (and variants like redash's `add_org_resource`). The ResourceClass holds the
325
+ * HTTP-verb methods (get/post/…), so the route references the class — its verb
326
+ * methods resolve as the handlers via the class. Method is ANY (the class
327
+ * decides which verbs it serves).
328
+ */
329
+ function extractFlaskRestful(filePath, safe) {
330
+ const nodes = [];
331
+ const references = [];
332
+ const now = Date.now();
333
+ const re = /\.add\w*[Rr]esource\s*\(\s*(\w+)\s*,\s*((?:['"][^'"]+['"]\s*,?\s*)+)/g;
334
+ let m;
335
+ while ((m = re.exec(safe)) !== null) {
336
+ const className = m[1];
337
+ const paths = (m[2].match(/['"]([^'"]+)['"]/g) || []).map((s) => s.slice(1, -1));
338
+ const line = safe.slice(0, m.index).split('\n').length;
339
+ for (const routePath of paths) {
340
+ const routeNode = {
341
+ id: `route:${filePath}:${line}:ANY:${routePath}`,
342
+ kind: 'route',
343
+ name: `ANY ${routePath}`,
344
+ qualifiedName: `${filePath}::ANY:${routePath}`,
345
+ filePath,
346
+ startLine: line,
347
+ endLine: line,
348
+ startColumn: 0,
349
+ endColumn: 0,
350
+ language: 'python',
351
+ updatedAt: now,
352
+ };
353
+ nodes.push(routeNode);
354
+ references.push({
355
+ fromNodeId: routeNode.id,
356
+ referenceName: className,
357
+ referenceKind: 'references',
358
+ line,
359
+ column: 0,
360
+ filePath,
361
+ language: 'python',
362
+ });
363
+ }
364
+ }
365
+ return { nodes, references };
366
+ }
249
367
  // Directory patterns
250
368
  const MODEL_DIRS = ['models', 'app/models', 'src/models'];
251
369
  const VIEW_DIRS = ['views', 'app/views', 'src/views', 'api/views'];
@@ -1 +1 @@
1
- {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/python.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { FrameworkResolver } from '../types';
2
+ export declare const reactNativeBridgeResolver: FrameworkResolver;
3
+ //# sourceMappingURL=react-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/react-native.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAuTlB,eAAO,MAAM,yBAAyB,EAAE,iBA8EvC,CAAC"}
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reactNativeBridgeResolver = void 0;
4
+ /** Per-context lazy map cache. */
5
+ const nativeMethodMaps = new WeakMap();
6
+ // ─── Native-side extraction ─────────────────────────────────────────────────
7
+ /**
8
+ * Default ObjC module name when `RCT_EXPORT_MODULE()` has no argument:
9
+ * strip a leading `RCT` prefix from the class name (Apple's convention)
10
+ * and treat the rest as the JS-visible module name. `RCTGeolocation` →
11
+ * `Geolocation`. Class names without an `RCT` prefix are returned
12
+ * unchanged.
13
+ */
14
+ function defaultObjcModuleName(className) {
15
+ return className.startsWith('RCT') && className.length > 3
16
+ ? className.slice(3)
17
+ : className;
18
+ }
19
+ /**
20
+ * Parse an ObjC `.m`/`.mm` file's source for `RCT_EXPORT_MODULE` and
21
+ * `RCT_EXPORT_METHOD` / `RCT_REMAP_METHOD` declarations, returning the
22
+ * inferred (moduleName, jsMethodName) pairs.
23
+ *
24
+ * The macro forms (a single `RCT_EXPORT_MODULE` per file conventionally
25
+ * matched to a single `@implementation`):
26
+ * - `RCT_EXPORT_MODULE()` — module name = class name with `RCT` prefix
27
+ * stripped
28
+ * - `RCT_EXPORT_MODULE(jsName)` — explicit name
29
+ * - `RCT_EXPORT_METHOD(selector:(arg1)label1:(arg2)label2)` — JS name =
30
+ * `selector` (the first keyword)
31
+ * - `RCT_REMAP_METHOD(jsName, selector:(arg1)label1:(arg2)label2)` —
32
+ * JS name = literal `jsName`
33
+ *
34
+ * Regex-based scan is sufficient — these macros are highly stylized and
35
+ * appear at top level. Pulling them out of the full AST would require a
36
+ * macro-aware ObjC parse the tree-sitter grammar doesn't provide.
37
+ */
38
+ function parseObjcRNExports(source, className) {
39
+ const results = [];
40
+ // RCT_EXPORT_MODULE — one per file by convention. Capture the optional arg.
41
+ const moduleMatch = source.match(/RCT_EXPORT_MODULE\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)?\s*\)/);
42
+ // Need a module name to attribute methods. Prefer the explicit macro arg,
43
+ // then the class name, then bail (no module = nothing useful to register).
44
+ const moduleName = moduleMatch?.[1] ??
45
+ (className ? defaultObjcModuleName(className) : null);
46
+ if (!moduleName)
47
+ return results;
48
+ // RCT_EXPORT_METHOD(selectorFirstKw:(args)…)
49
+ // The first keyword (everything up to the first `:` or open paren) is the
50
+ // JS-visible name. We don't try to parse full multi-keyword selectors —
51
+ // RN's JS view of the method uses only the first keyword.
52
+ const exportRegex = /RCT_EXPORT_METHOD\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)/g;
53
+ let m;
54
+ while ((m = exportRegex.exec(source)) !== null) {
55
+ const kw = m[1];
56
+ if (kw)
57
+ results.push({ moduleName, jsName: kw, nativeSelectorFirstKw: kw });
58
+ }
59
+ // RCT_REMAP_METHOD(jsName, nativeSelectorFirstKw:(args)…)
60
+ const remapRegex = /RCT_REMAP_METHOD\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*,\s*([A-Za-z_][A-Za-z0-9_]*)/g;
61
+ while ((m = remapRegex.exec(source)) !== null) {
62
+ const jsName = m[1];
63
+ const nativeKw = m[2];
64
+ if (jsName && nativeKw) {
65
+ results.push({ moduleName, jsName, nativeSelectorFirstKw: nativeKw });
66
+ }
67
+ }
68
+ return results;
69
+ }
70
+ /**
71
+ * Find the `@implementation` class name in an ObjC file — used as the
72
+ * fallback module name when `RCT_EXPORT_MODULE()` has no argument.
73
+ * (Categories of the form `@implementation Foo (Bar)` are correctly
74
+ * captured here as `Foo`, but a category file probably isn't where a
75
+ * fresh `RCT_EXPORT_MODULE` lives anyway.)
76
+ */
77
+ function findObjcClassName(source) {
78
+ const m = source.match(/@implementation\s+([A-Za-z_][A-Za-z0-9_]*)/);
79
+ return m?.[1] ?? null;
80
+ }
81
+ /**
82
+ * Parse a Java/Kotlin source file for `@ReactMethod` annotated methods
83
+ * and the surrounding class's `getName()` return value (the JS-visible
84
+ * module name).
85
+ *
86
+ * Java: `@ReactMethod public void getCurrentPosition(Callback cb) { … }`
87
+ * Kotlin: `@ReactMethod fun getCurrentPosition(cb: Callback) { … }`
88
+ *
89
+ * Class name comes from `class XxxModule extends ReactContextBaseJavaModule`
90
+ * (Java) or `class XxxModule : ReactContextBaseJavaModule(...)` (Kotlin).
91
+ * The JS-visible module name comes from `getName()` returning a literal
92
+ * string — fall back to the class name with a `Module` suffix stripped
93
+ * when the literal isn't present.
94
+ */
95
+ function parseJvmRNExports(source) {
96
+ const results = [];
97
+ // getName() literal — Java + Kotlin both look something like:
98
+ // public String getName() { return "Geolocation"; }
99
+ // fun getName(): String = "Geolocation"
100
+ // fun getName() = "Geolocation"
101
+ const getName = source.match(/\bgetName\s*\([^)]*\)\s*(?::\s*String)?\s*(?:=\s*|\{[^}]*return\s*)"([^"]+)"/);
102
+ // Class name fallback.
103
+ const classMatch = source.match(/\bclass\s+([A-Za-z_][A-Za-z0-9_]*)\b[^{]*ReactContextBaseJavaModule/) ??
104
+ source.match(/\bclass\s+([A-Za-z_][A-Za-z0-9_]*)\b[^{]*ReactPackage/);
105
+ const moduleName = getName?.[1] ?? (classMatch?.[1] ? classMatch[1].replace(/Module$/, '') : null);
106
+ if (!moduleName)
107
+ return results;
108
+ // @ReactMethod annotations — followed (after optional modifiers / args /
109
+ // newlines) by either `void <name>(` (Java) or `fun <name>(` (Kotlin).
110
+ const methodRegex = /@ReactMethod\b[^{]*?(?:\bfun\s+|\bvoid\s+|\bpublic\s+\w[\w<>\[\]]*\s+)([A-Za-z_][A-Za-z0-9_]*)\s*\(/g;
111
+ let m;
112
+ while ((m = methodRegex.exec(source)) !== null) {
113
+ const jsName = m[1];
114
+ if (jsName)
115
+ results.push({ moduleName, jsName });
116
+ }
117
+ return results;
118
+ }
119
+ /**
120
+ * Parse a TS file for a TurboModule spec declaration. The spec file is
121
+ * the JS↔native source-of-truth in the new architecture — its interface
122
+ * lists every JS-visible method, and a `TurboModuleRegistry.get*<Spec>(...)`
123
+ * default export pins the module name.
124
+ *
125
+ * Returns `null` when the file isn't a TurboModule spec.
126
+ */
127
+ function parseTurboModuleSpec(source) {
128
+ // `TurboModuleRegistry.getEnforcing<Spec>('ModuleName')` or
129
+ // `TurboModuleRegistry.get<Spec>('ModuleName')`. The literal must be a
130
+ // single-or-double-quoted string.
131
+ const regMatch = source.match(/TurboModuleRegistry\.(?:getEnforcing|get)\s*<[^>]*>\s*\(\s*['"]([^'"]+)['"]\s*\)/);
132
+ if (!regMatch || !regMatch[1])
133
+ return null;
134
+ const moduleName = regMatch[1];
135
+ // Find `export interface Spec extends TurboModule { … }` and pull each
136
+ // method declaration's name. We don't need types — just names.
137
+ const ifaceMatch = source.match(/export\s+interface\s+Spec\b[^{]*\{([\s\S]*?)\n\}/);
138
+ if (!ifaceMatch || !ifaceMatch[1])
139
+ return null;
140
+ const body = ifaceMatch[1];
141
+ const methods = [];
142
+ // Method shape: `name(args): ReturnType;` or `name(): void;`. Skip
143
+ // properties (no parens before colon).
144
+ const methodRegex = /^\s*([A-Za-z_][A-Za-z0-9_]*)\s*\(/gm;
145
+ let m;
146
+ while ((m = methodRegex.exec(body)) !== null) {
147
+ const name = m[1];
148
+ if (name)
149
+ methods.push(name);
150
+ }
151
+ return { moduleName, methods };
152
+ }
153
+ // ─── Map building ───────────────────────────────────────────────────────────
154
+ /**
155
+ * RCTEventEmitter built-ins that every emitter subclass inherits. JS code
156
+ * doesn't directly call these — they're internal plumbing for the
157
+ * `NativeEventEmitter` abstraction. If we leave them in the bridge map,
158
+ * every JS `addListener` / `remove` call (Firestore subscribers, RxJS
159
+ * pipelines, plain Array.remove, etc.) gets mis-bridged to whichever
160
+ * emitter happens to define them. Skip during map building.
161
+ */
162
+ const RN_EMITTER_BUILTINS = new Set([
163
+ 'addListener',
164
+ 'removeListeners',
165
+ 'remove',
166
+ 'invalidate',
167
+ 'startObserving',
168
+ 'stopObserving',
169
+ ]);
170
+ function buildRNMaps(context) {
171
+ const cached = nativeMethodMaps.get(context);
172
+ if (cached)
173
+ return cached;
174
+ const byJsName = new Map();
175
+ const allFiles = context.getAllFiles();
176
+ // Pre-index native methods by name for fast lookup when matching to
177
+ // their bridge exports.
178
+ const objcMethodsByFirstKw = new Map();
179
+ const jvmMethodsByName = new Map();
180
+ for (const node of context.getNodesByKind('method')) {
181
+ if (node.language === 'objc') {
182
+ const firstKw = node.name.includes(':') ? node.name.split(':')[0] : node.name;
183
+ if (firstKw) {
184
+ const arr = objcMethodsByFirstKw.get(firstKw);
185
+ if (arr)
186
+ arr.push(node);
187
+ else
188
+ objcMethodsByFirstKw.set(firstKw, [node]);
189
+ }
190
+ }
191
+ else if (node.language === 'java' || node.language === 'kotlin') {
192
+ const arr = jvmMethodsByName.get(node.name);
193
+ if (arr)
194
+ arr.push(node);
195
+ else
196
+ jvmMethodsByName.set(node.name, [node]);
197
+ }
198
+ }
199
+ for (const file of allFiles) {
200
+ // Legacy bridge — ObjC side.
201
+ if (file.endsWith('.m') || file.endsWith('.mm')) {
202
+ const source = context.readFile(file);
203
+ if (!source)
204
+ continue;
205
+ const className = findObjcClassName(source);
206
+ const exports = parseObjcRNExports(source, className);
207
+ for (const exp of exports) {
208
+ if (RN_EMITTER_BUILTINS.has(exp.jsName))
209
+ continue;
210
+ // Resolve to the native node by selector first-keyword. Multiple
211
+ // ObjC methods may share a first keyword across modules; filter by
212
+ // file path to attribute the export to this module's
213
+ // implementation file.
214
+ const candidates = objcMethodsByFirstKw.get(exp.nativeSelectorFirstKw) ?? [];
215
+ const node = candidates.find((c) => c.filePath === file) ?? candidates[0];
216
+ if (!node)
217
+ continue;
218
+ const entry = { moduleName: exp.moduleName, jsName: exp.jsName, node };
219
+ const arr = byJsName.get(exp.jsName);
220
+ if (arr)
221
+ arr.push(entry);
222
+ else
223
+ byJsName.set(exp.jsName, [entry]);
224
+ }
225
+ }
226
+ // Legacy bridge — Java/Kotlin side.
227
+ if (file.endsWith('.java') || file.endsWith('.kt')) {
228
+ const source = context.readFile(file);
229
+ if (!source)
230
+ continue;
231
+ const exports = parseJvmRNExports(source);
232
+ for (const exp of exports) {
233
+ if (RN_EMITTER_BUILTINS.has(exp.jsName))
234
+ continue;
235
+ const candidates = jvmMethodsByName.get(exp.jsName) ?? [];
236
+ const node = candidates.find((c) => c.filePath === file) ?? candidates[0];
237
+ if (!node)
238
+ continue;
239
+ const entry = { moduleName: exp.moduleName, jsName: exp.jsName, node };
240
+ const arr = byJsName.get(exp.jsName);
241
+ if (arr)
242
+ arr.push(entry);
243
+ else
244
+ byJsName.set(exp.jsName, [entry]);
245
+ }
246
+ }
247
+ // TurboModule spec — TS side.
248
+ if (file.endsWith('.ts') || file.endsWith('.tsx')) {
249
+ const source = context.readFile(file);
250
+ if (!source)
251
+ continue;
252
+ const spec = parseTurboModuleSpec(source);
253
+ if (!spec)
254
+ continue;
255
+ // For each spec method, find a matching native implementation by
256
+ // name. The spec's module name doesn't determine the native file
257
+ // path (Codegen wires it via name convention), so we match across
258
+ // all native methods of the right name.
259
+ for (const methodName of spec.methods) {
260
+ if (RN_EMITTER_BUILTINS.has(methodName))
261
+ continue;
262
+ // ObjC first-keyword match, then JVM bare-name match. Don't
263
+ // require module-name match for ObjC because the native side may
264
+ // have stripped a prefix.
265
+ const objcCands = objcMethodsByFirstKw.get(methodName) ?? [];
266
+ const jvmCands = jvmMethodsByName.get(methodName) ?? [];
267
+ for (const node of [...objcCands, ...jvmCands]) {
268
+ const entry = { moduleName: spec.moduleName, jsName: methodName, node };
269
+ const arr = byJsName.get(methodName);
270
+ if (arr)
271
+ arr.push(entry);
272
+ else
273
+ byJsName.set(methodName, [entry]);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ const result = { byJsName };
279
+ nativeMethodMaps.set(context, result);
280
+ return result;
281
+ }
282
+ // ─── Resolver ───────────────────────────────────────────────────────────────
283
+ exports.reactNativeBridgeResolver = {
284
+ name: 'react-native-bridge',
285
+ languages: ['javascript', 'typescript', 'tsx', 'jsx'],
286
+ /**
287
+ * Detect: package.json depends on `react-native`, OR any source file
288
+ * uses the `RCT_EXPORT_MODULE` / `RCT_EXPORT_METHOD` /
289
+ * `TurboModuleRegistry` markers. Either signal is enough — different
290
+ * libraries split the JS package from the native code (`react-native-svg`'s
291
+ * apple/ + android/ directories vs its src/), so we don't require both.
292
+ */
293
+ detect(context) {
294
+ const pkg = context.readFile('package.json');
295
+ if (pkg && /["']react-native["']\s*:/.test(pkg))
296
+ return true;
297
+ // Fallback: scan a small number of files for the macro markers — only
298
+ // looking at the first ones returned by getAllFiles to keep detect()
299
+ // fast on huge repos.
300
+ const files = context.getAllFiles();
301
+ for (let i = 0; i < Math.min(files.length, 200); i++) {
302
+ const f = files[i];
303
+ if (!f)
304
+ continue;
305
+ if (f.endsWith('.mm') || f.endsWith('.m')) {
306
+ const src = context.readFile(f);
307
+ if (src && /RCT_EXPORT_MODULE\b/.test(src))
308
+ return true;
309
+ }
310
+ if (f.endsWith('.ts') || f.endsWith('.tsx')) {
311
+ const src = context.readFile(f);
312
+ if (src && /TurboModuleRegistry\.(?:get|getEnforcing)\s*</.test(src))
313
+ return true;
314
+ }
315
+ }
316
+ return false;
317
+ },
318
+ claimsReference(_name) {
319
+ // JS-visible method names are ordinary identifiers and are typically
320
+ // already in `knownNames` (every TurboModule spec method, every
321
+ // RCT_EXPORT_METHOD, has a node somewhere). So we don't need to
322
+ // claim through the pre-filter — the ref reaches us via the normal
323
+ // hasAnyPossibleMatch path.
324
+ return false;
325
+ },
326
+ resolve(ref, context) {
327
+ // We only redirect JS callers — native callers don't need this resolver.
328
+ if (ref.language !== 'javascript' &&
329
+ ref.language !== 'typescript' &&
330
+ ref.language !== 'tsx' &&
331
+ ref.language !== 'jsx') {
332
+ return null;
333
+ }
334
+ // JS callsites of `obj.method()` reach the resolver as either
335
+ // `obj.method` (qualified) or `method` (bare). Strip a single dot
336
+ // prefix to get the JS-visible method name.
337
+ const name = ref.referenceName.includes('.')
338
+ ? ref.referenceName.slice(ref.referenceName.lastIndexOf('.') + 1)
339
+ : ref.referenceName;
340
+ const maps = buildRNMaps(context);
341
+ const entries = maps.byJsName.get(name);
342
+ if (!entries || entries.length === 0)
343
+ return null;
344
+ // Prefer the iOS (ObjC) target over Android when both exist — iOS is
345
+ // the conventional first-class platform for RN library docs and most
346
+ // graph queries. We still record only one edge; a JVM-only resolution
347
+ // is fine when no ObjC target exists.
348
+ const objc = entries.find((e) => e.node.language === 'objc');
349
+ const target = objc ?? entries[0];
350
+ if (!target)
351
+ return null;
352
+ return {
353
+ original: ref,
354
+ targetNodeId: target.node.id,
355
+ confidence: 0.6,
356
+ resolvedBy: 'framework',
357
+ };
358
+ },
359
+ };
360
+ //# sourceMappingURL=react-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-native.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/react-native.ts"],"names":[],"mappings":"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"}